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