我有一个只有interests
属性的:name
表。
我正在尝试播种(通过seed.rb
)以下数组,以便它们都以我的形式显示(复选框)...我该怎么做?
有没有比在seed.rb
中存储更好的方法?
[ "Adventure Sports", "Arts and Crafts", "Beauty/Hair",
"Books", "Dining Out", "Fine Art", "Fine Jewelry",
"Gardening", "Golf" ]
答案 0 :(得分: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
答案 1 :(得分:0)
我正在使用find_or_create_by_...
来确保即使再次运行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