Rails 4.0整数ID - > UUID/Add选项散列到ActiveRecord Migration中的表?

xph*_*xph 2 uuid ruby-on-rails rails-migrations ruby-on-rails-4

stackoverflow新手在这里,虽然我已经多次在这里寻找过去有用的答案.这是我的第一个问题,所以请你好:)

我一直试图通过添加(或修改)create_table命令附带的选项哈希来弄清楚如何在Rails中的ActiveRecord Migration中更改表.更具体地说,我正在尝试将使用整数ID的模型转换为在Rails 4.0和postgresql 9.1.9中使用UUID的模型.

例如,我的架构目前看起来像这样:

create_table :users do |t|
  t.string :name
  t.timestamps
end
Run Code Online (Sandbox Code Playgroud)

我想创建一个迁移将其更改为这个(继UUID指南这里):

create_table :users, id: false do |t|
  t.primary_key :id, :uuid, :default => 'uuid_generate_v1()'
  t.string :name
  t.timestamps
end
Run Code Online (Sandbox Code Playgroud)

我可以添加/删除/更改列,但我无法弄清楚如何将其id: false放入表中.到目前为止,我想出的唯一方法是通过完全核对表格drop_table :users,然后重新创建它,这对我来说似乎效率低下.是否有一些ActiveRecord方法我可以调用添加选项哈希?试图谷歌它没有成功,但也许我不知道什么是正确的搜索查询?

任何帮助,将不胜感激.提前致谢!

编辑:语法.

xph*_*xph 5

固定!发现传入id: false只是意味着数据库中没有生成id列,因此调用remove_column :users, :id将删除列并添加id: false到模式.

主要洞察力来自以下较旧的线程:迁移中的添加Id列

为完整起见,完整的迁移文件:

def up
  remove_column :users, :id
  add_column :users, :id, :uuid, default: 'uuid_generate_v1()'
end
def down
  remove_column :users, :id
  add_column :users, :id, :primary_key
end
Run Code Online (Sandbox Code Playgroud)