我有一个Rails应用,其中一个模型没有id
列。做一些研究我发现了创建它的迁移:
create_table(:the_model, :id => false) do |t|
# columns
end
现在,在新的迁移中,我想以Rails标准方式添加id
列(不使用特定于数据库的sql)。我怎么能这样做?
我已经尝试过这个但没有成功:
change_table(:the_model, :id => true) do |t|
end
答案 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
。