发现相对较新的(但不是最新的)Rails迁移写得不正确且无法回滚
remove_column :users, :subscription_id
想要
remove_column :users, :subscription_id, :integer
现在我们需要在生产和其他环境中回滚,我们不能:
ActiveRecord::IrreversibleMigration:
remove_column is only reversible if given a type.
如何最好地处理这个问题?是否可以返回并编辑旧版'迁移或这会对回购的其他用户产生意想不到的负面影响吗?
答案 0 :(得分:0)
这取决于您的项目以及是否存在实际回滚迁移的实际用例。
您提议的编辑不会对向前迁移数据库或生成的schema.rb产生任何影响。回滚迁移通常在开发和测试迁移时完成,而不是在生产环境中完成。
请注意,虽然您的编辑可以防止引发异常,但您并不能使其真正可逆。 Rails可以重新添加已删除的列,但是在删除之前它无法使用其中的任何数据填充它。