我是Rails的新手,我不小心在开发中运行了rails db:rollback
命令。
接下来,我做了rails db:migrate:up VERSION=XXXX
来更改从上向下滚动回滚的文件的状态。
迁移文件与图像有关。但是,由于回滚,我的图像处于开发模式,文件状态与我运行rails db:rollback
之前相同。
在这种情况下,如果我将其推送到远程存储库,并在生产中进行合并,那么已经存在的图像将与开发中的图像一起消失?
答案 0 :(得分:1)
运行迁移中的add_column
方法时,您只需在迁移中添加列即可在生产和开发环境中运行。现在,您通过本地主机将图像添加到应用程序中并存储在数据库中。因此,无论迁移如何,这些都将存储到数据库中。
回滚将删除运行remove_column
的列,因此,这将妨碍您的开发,因为删除列会使您丢失表中的所有数据。因此,在生产中,它不会处理相同的事情。
图像将被推送到生产数据库或远程存储库,仅用于添加或删除列,因此回滚将仅影响您的本地/开发环境
答案 1 :(得分:0)
除非您在迁移中做一些古怪的事情,否则您对开发数据库所做的任何此类蠢事都不会影响生产。这就是为什么开发数据库和生产数据库分开的原因。
通过添加一个在生产Rails环境中运行但用于其他新功能手动测试的登台服务器,可以缓解“是否可以安全地投产”这一普遍问题。一旦一切都在分期中完成,然后进行生产。许多服务都会为您提供“管道”功能,例如Heroku Pipelines。