ruby-on-rails - Rails 4. 将表 id 迁移到 UUID

标签 ruby-on-rails migration rails-migrations

我有一张 table :
db/migrate/20140731201801_create_voc_brands.rb:

class CreateVocBrands < ActiveRecord::Migration
  def change
    create_table :voc_brands do |t|
      t.string :name

      t.timestamps
    end
  end
end

但是我需要将表更改为此(如果我从零创建它):
class CreateVocBrands < ActiveRecord::Migration
  def change
    create_table :voc_brands, :id => false do |t|
      t.uuid :id, :primary_key => true
      t.string :name

      t.timestamps
    end
    add_index :voc_brands, :id
  end
end

如何使用迁移更改此设置?

最佳答案

我和你有同样的问题。要从默认 id 迁移到使用 uuid,我认为您可以使用类似于我所拥有的内容:

class ChangeVocBrandsPrimaryKey < ActiveRecord::Migration
  def change
    add_column :voc_brands, :uuid, :uuid, default: "uuid_generate_v4()", null: false

    change_table :voc_brands do |t|
      t.remove :id
      t.rename :uuid, :id
    end
    execute "ALTER TABLE voc_brands ADD PRIMARY KEY (id);"
  end
end

关于ruby-on-rails - Rails 4. 将表 id 迁移到 UUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25681599/

相关文章:

ruby-on-rails - 推荐用于软件即服务应用程序的 Rails 插件

javascript - ActionController::RoutingError(没有路由匹配 [GET] "/members/js/bootstrap.min.js"):(缺少 Assets 文件)

ruby-on-rails - 在Rails 4.0.4应用中找不到文件 'turbolinks'

language-agnostic - 开发人员在编程语言之间进行迁移的真正挑战是什么?

sql-server - 将 SQLite 数据库迁移到 Microsoft SQL Server

mysql - 导轨数据库 :migrate doesn't work after altering the database manually

mysql - Rails:通过迁移添加唯一索引会抛出 Mysql2::Error: BLOB/TEXT

ruby-on-rails - 向 Rails 数据库添加默认值

ruby-on-rails - rails admin 未初始化常量 Country::Person

sql - 从 Doctrine 迁移中获取 SQL