如果您需要创建user_id,那么可以合理地假设您正在引用用户表。在这种情况下,迁移应为:
rails generate migration AddUserRefToProducts user:references
此命令将生成以下迁移:
class AddUserRefToProducts < ActiveRecord::Migration
def change
add_reference :user, :product, index: true
end
end
运行rake db:migrate 后,user_id 列和索引都将添加到products 表中。
如果您只需要向现有列添加索引,例如name 的 user 表,以下技术可能会有所帮助:
rails generate migration AddIndexToUsers name:string:index 将生成以下迁移:
class AddIndexToUsers < ActiveRecord::Migration
def change
add_column :users, :name, :string
add_index :users, :name
end
end
删除add_column 行并运行迁移。
在所描述的情况下,您可以发出rails generate migration AddIndexIdToTable index_id:integer:index 命令,然后从生成的迁移中删除add_column 行。但我宁愿建议撤消初始迁移并添加参考:
rails generate migration RemoveUserIdFromProducts user_id:integer
rails generate migration AddUserRefToProducts user:references