Rails 5.1.0如何升级

时间:2017-05-04 12:13:21

标签: ruby-on-rails migration bigint ruby-on-rails-5.1

Rails 5.1.0引入了bigint主键和外键。

所有新表都有bigint pk,并且创建对旧表的引用迁移将不起作用,因为旧的pk是普通的int。

使用change_column _, :id,:bigint只是外键错误指向它,更不用说找到所有表的所有手动工作,以及哪些需要修改的键。

如何将我的所有表格的生产数据库迁移到使用bigint pk和fk?

当然,因为它的生产rails db:drop rails db:setup不是一种选择。

1 个答案:

答案 0 :(得分:1)

我面临同样的问题。临时删除fk应该工作。目标是将所有主键从int更改为bigint。

class ChangeForeignKeysToBigInt < ActiveRecord::Migration[5.1]
  def change

    remove_foreign_key "event_users", "events"

    change_column :event_users, :event_id, :bigint
    change_column :events, :id, :bigint

    add_foreign_key "event_users", "events"

  end
end

您必须对所有表和外键列执行此操作 也许以同样的方式处理索引,我没有测试