22

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

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

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

我已经尝试过了,但没有成功:

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

3 回答 3

46

您可以手动添加 id 列:

add_column :table_name, :id, :primary_key

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

于 2012-09-23T00:43:16.943 回答
7

你不需要提及:integer

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

于 2016-02-17T09:14:41.567 回答
4

您已经得到了答案,但是在这种情况下,这是一个可以完成所有工作的衬垫

rails generate migration AddIdToModel id:integer

查看迁移文件名的语法 Add ColumnName To TableName跟在列描述后面。它将生成如下所示的内容

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

现在,如果您有其他感觉,您可以更改这条线。然后运行rake db:migrate

于 2012-09-23T06:17:00.310 回答