2009-07-16 15 views
17

ジェネレータスクリプトを使用して、モデルとそれに対応するデータベーステーブルをRailsに生成します。データベーステーブルには、 "enum"型のフィールドがあります。どうすればそれを生成できますか? SQLで列挙型フィールドでモデルを生成する方法は?

表の定義:

create table works { 
    id int unsigned not null auto_increment, 
    nickname varchar(20) not null, 
    sex enum('m', 'f') not null 
}; 

のRailsジェネレータコマンド:

script/generator work nickname:string sex:(what should I write here?) 

答えて

5

あなただけの文字列を使用して、このようなモデルの検証を追加することができます。

validates_inclusion_of :sex、:in =>%w(mf)

4

残念ながら、va蓋の列の種類は整数、浮動小数点、日時、日付、タイムスタンプ、時刻、テキスト、文字列、バイナリ、ブール値です

validates_inclusion_ofを列にしてみてください。

+0

リンクが機能していません。 –

+0

@ RishabhSinghalありがとう、私は壊れたリンクを削除しました。 – erik

27

ActiveRecord::Enumを追加アクティブレコードに列挙サポートを追加します。列の型をデータベース内の整数に変更したい限り、それらを使用できます。

これらの列挙型を使用するには、あなたのコマンドを生成してintegerを置く:

bin/rails generate Work nickname:string sex:integer 

を次に生成されたモデルファイルにenumへの呼び出しを追加します。

class Work < ActiveRecord::Base 
    enum sex: [ :male, :female ] 
end 

詳細はEnum’s documentationを参照してください。

関連する問題