Rails — 迁移表(包含数据)以使用 UUID 而不是 ID

Mir*_*318 5 ruby-on-rails rails-migrations ruby-on-rails-5

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

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

如何编写一个迁移来更改 id、更新现有记录以具有 UUID 以及更新其他表外键中的引用?

Uma*_*han -1

要从 default 迁移id到 use 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
Run Code Online (Sandbox Code Playgroud)

  • 首先,此迁移没有使用 uuid 的扩展;第二,它是不可逆转的;第三,当引用的数据存在时,它不起作用 (2认同)