我所拥有的最佳解决方案就像写下面一样。
if Category.count == 0
categories = Category.create([{ name: 'business' }, { name: 'sport' })
end
if Category.count == 0
categories = Category.create([{ name: 'business' }, { name: 'sport' })
elsif Category.count == 2
Category.create([{ name: 'science' }])
categories = Category.all
end
这有点失败,因为每次添加数据时我都必须写[{ name: 'hoge' }]
。
我可能会错过Category.count === COUNT
块中的elsif
。
有更好的解决方案吗?
我认为如果它能够从某个数组中添加/删除某些值来更新主数据会很好。
答案 0 :(得分:0)
我更喜欢使用类似seed_fu的内容来管理种子数据。我还添加了一个rake任务来执行每个部署的种子。
答案 1 :(得分:0)
将find_or_create与数据数组一起使用:
category_data = [
{ name: 'business' },
{ name: 'sport' }
]
category_data.each do |d|
Category.find_or_create_by(d)
end
编辑:抱歉,这是Rails 4中的语法......
category_data.each do |d|
Category.where(d).first_or_create()
end