Search code examples
mysqluuidruby-on-rails-5rails-migrations

Rails 5—How to add UUID column


There doesn't seem to be much documentation on UUIDs in Rails 5. All I've found is this code:

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

That works great if you're creating a table, but what if you're updating an already-existing table?

How do you add a UUID column to a table?


Solution

  • To migrate from default id to use uuid, try writing migration like this:

    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