2016-12-06 30 views
3

我有一个Project模型,它具有依赖项,并且数据库中已有记录。Rails-迁移表(使用数据)具有UUID而不是ID

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

我该如何编写一个将改变id的迁移,将现有记录更新为具有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 
+1

所有这种迁移首先没有扩展使用UUID;其次,这是不可逆转的;第三,当引用数据存在时它不能工作 – antiqe

相关问题