我在生产中有一个Rails应用程序,其中包含种子数据。我们需要添加更多的种子数据,但使用rake db:populate
将复制所有旧的种子数据,当然我们不希望将数据添加到迁移中。
那么,添加额外的种子数据到应用程序的最佳方法是什么?
我在生产中有一个Rails应用程序,其中包含种子数据。我们需要添加更多的种子数据,但使用rake db:populate
将复制所有旧的种子数据,当然我们不希望将数据添加到迁移中。
那么,添加额外的种子数据到应用程序的最佳方法是什么?
你可能需要构建另一个rake任务。或者您可以对每一行进行检查,以查看它是否已存在。虽然这样可能需要更多时间来运行,但至少不会有重复项。
我在我的种子文件中使用了一个笨拙的解决方法,以防止相同的数据被添加两次。
if Therapy.count == 0
therapies = Therapy.create([
{ :name => 'Peritoneal dialysis'
},
{ :name => 'Haemodialysis'
},
{ :name => 'Plasma therapy'
},
{ :name => 'Laparotomy'
},
{ :name => 'Haemofiltration'
}
])
end
我想这可以被修改为以下内容
if Therapy.count == 0
therapies = Therapy.create([
{ :name => 'Peritoneal dialysis'
},
{ :name => 'Haemodialysis'
},
{ :name => 'Plasma therapy'
},
{ :name => 'Laparotomy'
},
{ :name => 'Haemofiltration'
}
])
elsif Therapy.count == 4
therapies = Therapy.create([
{ :name => 'NEW THERAPY'
}
])
end
rake -T seed
rake db:seed # Load the seed data from db/seeds.rb
话虽如此,seed_fu 在我看来提供了更好的功能