belongs_to
关联在其对应的表中预期有association_id
列.由于cars属于用户,cars表应该有一个user_id
列.这可以通过两种方式实现.
首先,可以在创建模型时生成列
rails g model car user_id:references
或者在创建了Richard Brown的答案那样的模型后添加用户id.请注意,如果使用integer
而不是references
,则必须自己创建索引.
rails g migration add_user_id_to_cars user_id:integer
然后在生成的迁移中,添加
add_index :cars, :user_id
更新:
正如Joseph在 comments 中提到的,手动添加索引的需求已经在当前版本的Rails中得到了解决.我认为它是在Rails 4中引入的.你可以在official Rails guide for migrations页阅读更多内容.其要点是运行以下生成器
bin/rails g migration add_user_to_cars user:references
将创建一个类似于
add_reference :cars, :user, index: true
这将向cars表中添加一个user_id
列,并将该列标记为索引.