【发布时间】:2014-01-04 00:26:53
【问题描述】:
在我的生产数据库中,我不想删除所有信息,但我确实想使用我的 seed.db 文件更新现有行的一些字段(我添加了一个新列)。
解决这个问题的正确方法是什么?我应该创建一个单独的 rake 任务还是什么?我的seeds.db 文件中应该有if exists, update 逻辑吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 rake
在我的生产数据库中,我不想删除所有信息,但我确实想使用我的 seed.db 文件更新现有行的一些字段(我添加了一个新列)。
解决这个问题的正确方法是什么?我应该创建一个单独的 rake 任务还是什么?我的seeds.db 文件中应该有if exists, update 逻辑吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 rake
您可以使用类似于此问题的内容 - create_or_update method in rails
然后编写您的种子.rb 以使用 update_or_create 而不仅仅是创建记录。这样您就可以简单地重新运行您的种子数据来刷新您的数据库?
【讨论】:
有不同的方法来处理这种情况。
如果您只想复制数据库的某些列,那么种子文件或 rake 任务就足够了。
此外,
Model.find_or_create_by_field("XXXXX") 可以解决问题。
如果您希望将整个数据库复制到生产中,我会选择 taps gem(观看此 railscast http://railscasts.com/episodes/342-migrating-to-postgresql),或者如果您正在部署到 heroku,就像 heroku pg:pull 一样简单
【讨论】: