0

属性のみを持つinterestsテーブルがあります。:name

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

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

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

2 に答える 2

5

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

[ "Adventure Sports", "Arts and Crafts"].each do |interest|
  Interest.create!({:name => interest})
end

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

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

そして、あなたのフォームで例えば:

f.select Interest::INTERESTS
于 2012-05-11T21:14:45.330 に答える
1

が再度実行さfind_or_create_by_...れた場合でも、レコードが 1 回だけ作成されるようにするために使用しています。seeds.rb

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

name列名であること。列名がたとえばtitle使用の場合find_or_create_by_title

複数の列を設定するためにも使用できます。例:

[["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
于 2012-05-14T09:22:20.593 に答える