我需要将现有模型的id更改为uuid。我正在使用本指南:
http://rny.io/rails/postgresql/2013/07/27/use-uuids-in-rails-4-with-postgresql.html
但不知道如何使下面的迁移适应(不创建新的):
def determineType(x: Any): String = x match /* ! */ {
case _ => "anything"
}
答案 0 :(得分:3)
试试这个。
class documents < ActiveRecord::Migration
def change
add_column :documents, :uuid, :uuid, default: "uuid_generate_v4()", null: false
change_table :documents do |t|
t.remove :id
t.rename :uuid, :id
end
execute "ALTER TABLE documents ADD PRIMARY KEY (id);"
end
end
答案 1 :(得分:0)
Rails自动处理uuid
,因此您只需将id
更改为uuid
,设置列类型uuid
PGSQL
,{{1 ({1}})并使用新的string
重新填充表格。
在我自己这样做的过程中,我只是将MYSQL
列更改为uuid
,以便Rails自动填充它。
id
这会将您的uuid
列重命名为$ rails g migration ChangeID
#db/migrate/change_id______.rb
class ChangeId < ActiveRecord::Migration
def change
rename_column :documents, :id, :uuid
change_column :documents, :uuid, :uuid #-> will only work for PGQL, will have to make it string for MYSQL
end
end
$ rake db:migrate
,并为其指定相应的列类型。
而且,是的,我之前使用过:id
...
-
一个好的参考: