2012-05-11 1 views
0

テーブルには:name属性のみがあります。Rails 3:配列をseed.rbにシードするには?

私は(seed.rbを介して)次の配列を自分のフォーム(チェックボックス)に表示するようにシードしようとしています...どうすればいいですか?

これをseed.rbに保存するよりも良い方法はありますか?

[ "Adventure Sports", "Arts and Crafts", "Beauty/Hair", 
    "Books", "Dining Out", "Fine Art", "Fine Jewelry", 
    "Gardening", "Golf" ] 
+0

を設定するために使用することができます。 –

答えて

5

seed.rbに入れたい場合は、他の場所と同じように作成します。

また、モデルに定数として保存し、フォームで使用することもできます。

class Interest < ActiveRecord::Base 
    INTERESTS = [ "Adventure Sports", "Arts and Crafts" ] 
end 

そしてフォームの例で:

[ "Adventure Sports", "Arts and Crafts"].each do |interest| 
    Interest.find_or_create_by_name(interest) 
end 

で:

f.select Interest::INTERESTS 
0

私はseeds.rbが再び実行された場合でも、レコードは一度だけ作成されることを保証するためにfind_or_create_by_...を使用していますnameが列名です。列名がたとえばtitlefind_or_create_by_titleを使用してください。

また、その前に4スペースのインデントを使用してコードをフォーマットしてください複数の列例えば:

[["Adam", 10], ["Allan", 20], ["Andy", 30]].each do |data| 
    role = Role.find_by_name("editor").id 
    User.find_or_create_by_name_and_credits_and_role_id(data[0], data[1], role) 
end 
関連する問題