生产已经发布时更新seed.rb.

时间:2012-10-31 13:57:08

标签: ruby-on-rails ruby

我所拥有的最佳解决方案就像写下面一样。

在发布生产之前

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

有更好的解决方案吗?

我认为如果它能够从某个数组中添加/删除某些值来更新主数据会很好。

2 个答案:

答案 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