在迁移中添加Id列

alf*_*alf 20 activerecord ruby-on-rails ruby-on-rails-3

我有一个Rails应用程序,其中一个模型没有id列.做一些研究我发现了创建它的迁移:

create_table(:the_model, :id => false) do |t|
  # columns
end
Run Code Online (Sandbox Code Playgroud)

现在,在新的迁移中,我想以idRails标准方式添加列(不使用特定于数据库的sql).我怎样才能做到这一点?

我已经尝试过这个没有成功:

change_table(:the_model, :id => true) do |t|
end
Run Code Online (Sandbox Code Playgroud)

cde*_*ers 39

您可以手动添加id列:

add_column :table_name, :id, :primary_key
Run Code Online (Sandbox Code Playgroud)

或清除(或备份)您的数据,回滚到此迁移,删除该选项:id => false,然后重新迁移.

  • 当你告诉rails创建列:primary_key时,它会设置数据库,这样db就会自动为你填充id字段.您的所有记录都会神奇地获得独特的ID. (7认同)
  • 通过运行迁移,现有记录的id列会自动填充唯一的id值吗?如果没有,我如何/如何分配它们以保持系统满意? (2认同)

小智 5

你不用提 :integer

rails g migration add_id_to_model id:primary_key 为我工作。