我目前正在将旧版(Rails)应用程序数据架构重新设计到新的Rails应用程序中。我要做的是:
实际上它有效,但是可以将这两个迁移+ rake任务“混合”到一个单独的脚本中吗?除了一个接一个地运行3个脚本之外,真的没有其他解决方案吗? (调度rake任务最多需要10分钟)。
当我要部署到制作时,我会真的更喜欢“拍摄并忘记”一个命令行,从旧应用程序转移到新应用程序。
答案 0 :(得分:0)
根据rake任务的复杂性,您可以在迁移文件中完成所有操作。只需要非常小心重新定义需要访问的模型,以避免任何新的验证失败,因为这些列尚不存在。谷歌提供解决方案。
另一种方法是从处理此问题的中央rake任务调用所有内容。我不确定我喜欢那个。
要记住一件事......如果rake任务无法迁移某些数据会发生什么。在运行删除旧字段的迁移之前,您需要验证它是否全部工作。
答案 1 :(得分:0)
好的,最后我只需要在需要时使用原始SQL语句执行一个rake任务:
dropped_fields = "ALTER TABLE `locations` DROP `name`, DROP.....;"
ActiveRecord::Base.connection.execute(dropped_fields)
答案 2 :(得分:0)
我建议你进行三次单独的迁移,即
第二项任务是“仅数据”迁移,只进行必要的更新。您需要确保此任务以正确的方式退出,具体取决于成功/失败,因为如果它失败/工作,您将依赖ActiveRecords迁移流控制来做正确的事情。
您现在需要在部署期间执行单个rake db:migrate
命令