【问题标题】:Modifying (fixing) an old Rails migration修改(修复)旧的 Rails 迁移
【发布时间】:2018-07-09 21:43:30
【问题描述】:

发现一个相对较新的(但不是最近的)Rails 迁移写入错误且无法回滚

remove_column :users, :subscription_id

想成为

remove_column :users, :subscription_id, :integer

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

ActiveRecord::IrreversibleMigration:

remove_column is only reversible if given a type.

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

【问题讨论】:

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


    【解决方案1】:

    这取决于您的项目,以及是否有真正的回滚迁移用例。

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

    请记住,尽管您的编辑可以防止引发异常,但您并没有使其真正可逆。 Rails 可以重新添加已删除的列,但无法使用删除前的任何数据填充该列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-02
      • 2018-04-09
      • 2019-01-26
      • 2015-09-28
      • 2019-05-27
      • 2010-10-03
      • 2011-04-15
      • 1970-01-01
      相关资源
      最近更新 更多