Rails-迁移表(包含数据)以具有UUID而不是ID

时间:2016-12-06 00:38:01

标签: ruby-on-rails ruby-on-rails-5 rails-migrations

我有一个Project模型,它有依赖项,数据库中已有记录。

我想将Project.id(它的主键)更改为UUID,而不仅仅是递增的整数。

如何编写将更改id的迁移,更新现有记录以获取UUID,以及更新其他表的外键中的引用?

1 个答案:

答案 0 :(得分:0)

要从默认id迁移到使用uuid,请尝试按以下方式编写迁移:

class ChangeProjectsPrimaryKey < ActiveRecord::Migration
  def change
    add_column :projects, :uuid, :uuid, default: "uuid_generate_v4()", null: false

    change_table :projects do |t|
      t.remove :id
      t.rename :uuid, :id
    end

    execute "ALTER TABLE projects ADD PRIMARY KEY (id);"
  end
end