我有一个 Rails 应用程序,其中一个模型没有id
列。做一些研究,我发现了创建它的迁移:
create_table(:the_model, :id => false) do |t|
# columns
end
现在,在新的迁移中,我想以id
Rails 标准方式添加列(不使用特定于数据库的 sql)。我怎样才能做到这一点?
我已经尝试过了,但没有成功:
change_table(:the_model, :id => true) do |t|
end
我有一个 Rails 应用程序,其中一个模型没有id
列。做一些研究,我发现了创建它的迁移:
create_table(:the_model, :id => false) do |t|
# columns
end
现在,在新的迁移中,我想以id
Rails 标准方式添加列(不使用特定于数据库的 sql)。我怎样才能做到这一点?
我已经尝试过了,但没有成功:
change_table(:the_model, :id => true) do |t|
end
您可以手动添加 id 列:
add_column :table_name, :id, :primary_key
或清除(或备份)您的数据,回滚到此迁移,摆脱选项:id => false
,然后重新迁移。
你不需要提及:integer
rails g migration add_id_to_model id:primary_key
为我工作。
您已经得到了答案,但是在这种情况下,这是一个可以完成所有工作的衬垫
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
。