Ruby on Rails意外地db:rollback

时间:2019-02-13 08:04:21

标签: ruby-on-rails

我是Rails的新手,我不小心在开发中运行了rails db:rollback命令。

接下来,我做了rails db:migrate:up VERSION=XXXX来更改从上向下滚动回滚的文件的状态。

迁移文件与图像有关。但是,由于回滚,我的图像处于开发模式,文件状态与我运行rails db:rollback之前相同。

在这种情况下,如果我将其推送到远程存储库,并在生产中进行合并,那么已经存在的图像将与开发中的图像一起消失?

2 个答案:

答案 0 :(得分:1)

运行迁移中的add_column方法时,您只需在迁移中添加列即可在生产和开发环境中运行。现在,您通过本地主机将图像添加到应用程序中并存储在数据库中。因此,无论迁移如何,这些都将存储到数据库中。

回滚将删除运行remove_column的列,因此,这将妨碍您的开发,因为删除列会使您丢失表中的所有数据。因此,在生产中,它不会处理相同的事情。

图像将被推送到生产数据库或远程存储库,仅用于添加或删除列,因此回滚将仅影响您的本地/开发环境

答案 1 :(得分:0)

除非您在迁移中做一些古怪的事情,否则您对开发数据库所做的任何此类蠢事都不会影响生产。这就是为什么开发数据库和生产数据库分开的原因。

通过添加一个在生产Rails环境中运行但用于其他新功能手动测试的登台服务器,可以缓解“是否可以安全地投产”这一普遍问题。一旦一切都在分期中完成,然后进行生产。许多服务都会为您提供“管道”功能,例如Heroku Pipelines