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方法我可以调用添加选项哈希?试图谷歌它没有成功,但也许我不知道什么是正确的搜索查询?
任何帮助,将不胜感激.提前致谢!
编辑:语法.
固定!发现传入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)
| 归档时间: |
|
| 查看次数: |
2500 次 |
| 最近记录: |