Ruby On Rails(3.0.5)についてお聞きします。


DBにMySQLを採用して、modelを実装したいと思っています。
modelを作成する際に、下記コマンドのようにモデル名の後にフィールド名:データ型を指定していくとおもいます。

rails generate model card name:string price:integer display:boolean

このように指定するデータ型に、enumやsetなどのMySQL特有のデータ型を指定することはできないのでしょうか?また、smallintやmediumblobといった型を指定することは可能ですか?
購入した書籍にも、入門書的な位置づけのWEBサイトにもStringやinteger、dateなどのデータ型については掲載しているのですが、その他の型についての記載がありません。

rails3でenumやsetをデータ型として指定する方法や、rails generate model コマンドで指定できるデータ型の一覧表を掲載しているサイトなどをご教示いただけましたら幸いです。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/10/04 00:05:24
  • 終了:2011/10/04 10:59:16

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4584ベストアンサー獲得回数19242011/10/04 00:35:21

ポイント40pt

rails generate model コマンドで指定できるデータ型の一覧

マニュアルを当たるのが、王道です。

http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/TableDefinition.html#method-i-column

:primary_key, :string, :text, :integer, :float, :decimal, :datetime, :timestamp, :time, :date, :binary, :boolean.


enumやsetをデータ型として指定する方法

http://stackoverflow.com/questions/1137796/how-to-generate-a-model-with-a-enum-type-field

適当な型を指定して、validation を定義して範囲を絞れ、と言ってるようです。

You could just use a string and then add validation on the model like this:

validates_inclusion_of :sex, :in => %w( m f )

その他の回答(2件)

id:a-kuma3 No.1

a-kuma3回答回数4584ベストアンサー獲得回数19242011/10/04 00:35:21ここでベストアンサー

ポイント40pt

rails generate model コマンドで指定できるデータ型の一覧

マニュアルを当たるのが、王道です。

http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/TableDefinition.html#method-i-column

:primary_key, :string, :text, :integer, :float, :decimal, :datetime, :timestamp, :time, :date, :binary, :boolean.


enumやsetをデータ型として指定する方法

http://stackoverflow.com/questions/1137796/how-to-generate-a-model-with-a-enum-type-field

適当な型を指定して、validation を定義して範囲を絞れ、と言ってるようです。

You could just use a string and then add validation on the model like this:

validates_inclusion_of :sex, :in => %w( m f )

id:zonoise No.2

zonoise回答回数1ベストアンサー獲得回数02011/10/04 00:40:57

ポイント40pt

rails generate model コマンドで指定できるデータ型の一覧

http://guides.rubyonrails.org/migrations.html から引用

:primary_key

:string

:text

:integer

:float

:decimal

:datetime

:timestamp

:time

:date

:binary

:boolean

Migrationファイルで直接SQLを使用するにはここが参考になるかも

http://api.rubyonrails.org/classes/ActiveRecord/Migration.html から引用

And sometimes you need to do something in SQL not abstracted directly by migrations:

class MakeJoinUnique < ActiveRecord::Migration

def up

execute "ALTER TABLE `pages_linked_pages` ADD UNIQUE `page_id_linked_page_id` (`page_id`,`linked_page_id`)"

end

def down

execute "ALTER TABLE `pages_linked_pages` DROP INDEX `page_id_linked_page_id`"

end

end

id:Jupiter2100 No.3

じゅぴたー回答回数444ベストアンサー獲得回数742011/10/04 00:41:06

ポイント20pt

できません。

RDBMS依存になったらRailsを適用する意味が無くなりますので。


MySQLのデータ型とRailsクラスのアタッチについては「続・RubyOnRails を使ってみる」が参考になります。

  • id:hkweb
    https://github.com/search?q=enum&type=Everything&repo=&langOverride=&start_value=1
    プラグイン使えばできるようです
  • id:hardboiled243
    >hkwebさん

    ご教示ありがとうございます。
    いろんなプラグインがあるみたいですね。

    近いうちにいくつか利用してみます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません