使用uuid-ossp在Rails中将模型id更改为uuid

时间:2015-10-29 10:39:05

标签: ruby-on-rails uuid rails-migrations

我需要将现有模型的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"
}

2 个答案:

答案 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

source

答案 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 ...

enter image description here

-

一个好的参考: