Rails 5 - 如何添加UUID列

时间:2016-12-06 04:02:28

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

在Rails 5中似乎没有关于UUID的大量文档。我发现的是这段代码:

create_table :users, id: :uuid do |t|
  t.string :name
end

如果你正在创建一个表格,那么效果很好,但是如果你要更新已经存在的表格呢?

如何向表中添加 UUID列?

2 个答案:

答案 0 :(得分:2)

以下是如何将AutoMapperProfile列添加到现有Rails表中。

uuid

如果您忘记添加class AddUuidToContacts < ActiveRecord::Migration[5.1] def change enable_extension 'uuid-ossp' # => http://theworkaround.com/2015/06/12/using-uuids-in-rails.html#postgresql add_column :contacts, :uuid, :uuid, default: "uuid_generate_v4()", null: false execute "ALTER TABLE contacts ADD PRIMARY KEY (uuid);" end end ,则会收到以下错误:

  

PG :: UndefinedFunction:ERROR:函数uuid_generate_v4()没有   存在ActiveRecord :: StatementInvalid:PG :: UndefinedFunction:ERROR:   函数uuid_generate_v4()不存在

答案 1 :(得分:0)

要从默认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