我有一个interests
只有一个:name
属性的表。
我正在尝试播种(通过seed.rb
)以下数组,以便它们都显示在我的表单中(复选框)......我该怎么做?
有没有比将它存储在更好的方法seed.rb
?
[ "Adventure Sports", "Arts and Crafts", "Beauty/Hair",
"Books", "Dining Out", "Fine Art", "Fine Jewelry",
"Gardening", "Golf" ]
我有一个interests
只有一个:name
属性的表。
我正在尝试播种(通过seed.rb
)以下数组,以便它们都显示在我的表单中(复选框)......我该怎么做?
有没有比将它存储在更好的方法seed.rb
?
[ "Adventure Sports", "Arts and Crafts", "Beauty/Hair",
"Books", "Dining Out", "Fine Art", "Fine Jewelry",
"Gardening", "Golf" ]
如果你想把它放到你的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
我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