小编Mic*_*ael的帖子

我如何获得不可逆迁移?

我已经在我的用户表中添加了“激活”作为布尔值。我忘记将其添加为 false 作为默认值,所以我生成了此迁移:

rails g migration add_default_to_users_activated
Run Code Online (Sandbox Code Playgroud)

然后我在这里添加了第 3 行:

class AddDefaultToUsersActivated < ActiveRecord::Migration
  def change
    change_column_default :users, :activated, true
  end
end
Run Code Online (Sandbox Code Playgroud)

然后我运行迁移没有任何问题。我意识到我应该添加“false”而不是“true”,所以我想反转迁移并将 add_default_to_users_activated.rb 文件更改为“false”但是当我运行时

rake db:rollback
Run Code Online (Sandbox Code Playgroud)

rake 由于 ActiveRecord::IrreversibleMigration 而中止。

但是我设置的机制是什么,可以防止迁移被恢复以及如何修复它?

编辑:我正在运行 Rails 4.2

reverse ruby-on-rails rollback rails-migrations rails-activerecord

4
推荐指数
1
解决办法
2359
查看次数