在迁移中添加Id列

时间:2012-09-23 00:22:39

标签: ruby-on-rails ruby-on-rails-3 activerecord

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

create_table(:the_model, :id => false) do |t|
  # columns
end

现在,在新的迁移中,我想以Rails标准方式添加id列(不使用特定于数据库的sql)。我怎么能这样做?

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

change_table(:the_model, :id => true) do |t|
end

3 个答案:

答案 0 :(得分:35)

您可以手动添加id列:

add_column :table_name, :id, :primary_key

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

答案 1 :(得分:5)

您不需要提及:integer

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

答案 2 :(得分:4)

你已经得到了答案,但是在这种情况下,这是一个完成所有操作的单行程

rails generate migration AddIdToModel id:integer

查看迁移文件名Add ColumnName TableName 的语法,然后按照列说明进行操作。 它将生成类似下面的内容

class AddIdToModel < ActiveRecord::Migration
  def change
    add_column :models, :id, :integer
  end
end

现在,如果您有其他任何想法,可以更改此行。然后运行rake db:migrate