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

时间:2013-05-24 09:00:35

标签: ruby-on-rails uuid 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

我想创建一个迁移,将其更改为此(遵循UUID指南here):

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

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

任何帮助将不胜感激。提前谢谢!

编辑:语法。

1 个答案:

答案 0 :(得分:5)

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

主要洞察来自以下较旧的主题:Add Id column in a migration

完整性,完整的迁移文件:

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