Rails - миграция таблицы (с данными), чтобы иметь UUID вместо ID

У меня есть Project модель, которая имеет иждивенцев, и уже есть записи в БД.

я хочу измениться Project.id (это первичный ключ), чтобы быть UUID, а не просто возрастающим целым числом.

Как мне написать миграцию, которая изменит идентификатор, обновит существующие записи, чтобы иметь UUID, и обновит их ссылки во внешних ключах других таблиц?

1 ответ

Для миграции со значения по умолчанию 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
Другие вопросы по тегам