我们必须在生产应用上修复一些不良数据,以便在数据库中添加空约束。
我知道一种方法是创建迁移并在那里运行脚本,但采用这种方法感觉不对,因为我需要访问模型,这些模型名称可能会在应用程序的整个生命周期中发生变化,从而破坏从开始到结束运行时的迁移。
我已经考虑过rake任务,但rake任务感觉它们不仅仅是要运行一次。
我真的只需要一个地方来记录脚本,但在搜索答案后,我没有看到任何关于将这些内容放入应用程序中的特殊文件夹的建议。
很想听到有关这方面的想法以及哪种方法最有意义。
谢谢!
答案 0 :(得分:1)
我认为你可以完全使用rake任务来修复坏数据。 rake任务可以根据您的需要使用一次或多次。您可以在使用后删除rake任务。耙子任务也被广泛用于我们的项目中。
答案 1 :(得分:1)
如果您愿意更改production
SSH进入生产环境
CHDir到当前部署目录在Rails Console
模式下打开--sandbox
有关rails控制台的详细信息,请参见此处
http://edgeguides.rubyonrails.org/command_line.html#rails-console
应用您想要的更改并验证更改是否符合您的预期
;
键入记事本中的所有命令,或者line-feed
沙盒模式下的Rails控制台:退出控制台后,您所做的任何更改都会回滚。
并且,在production
中更改数据而不进行正确验证可能会花费您一大笔钱。所以要小心。
答案 2 :(得分:0)
结束迁移,除非我跳过代码修复数据,如果该类不再存在。
我最终进行迁移的原因是因为我团队中的其他一些开发人员需要修复数据。