修改(修复)旧的Rails迁移

时间:2018-01-30 21:43:22

标签: ruby-on-rails ruby-on-rails-4 migration database-migration

发现相对较新的(但不是最新的)Rails迁移写得不正确且无法回滚

remove_column :users, :subscription_id

想要

remove_column :users, :subscription_id, :integer

现在我们需要在生产和其他环境中回滚,我们不能:

ActiveRecord::IrreversibleMigration:

remove_column is only reversible if given a type.

如何最好地处理这个问题?是否可以返回并编辑旧版'迁移或这会对回购的其他用户产生意想不到的负面影响吗?

1 个答案:

答案 0 :(得分:0)

这取决于您的项目以及是否存在实际回滚迁移的实际用例。

您提议的编辑不会对向前迁移数据库或生成的schema.rb产生任何影响。回滚迁移通常在开发和测试迁移时完成,而不是在生产环境中完成。

请注意,虽然您的编辑可以防止引发异常,但您并不能使其真正可逆。 Rails可以重新添加已删除的列,但是在删除之前它无法使用其中的任何数据填充它。