belongs_to
关联期望association_id
在其对应表中有一个列。由于汽车属于用户,汽车表应该有一个user_id
列。这可以通过两种方式完成。
首先,您可以在创建模型时生成列
rails g model car user_id:references
或者在创建模型后添加 user_id,就像 Richard Brown 的回答一样。请注意,如果您使用integer
而不是references
,则必须自己创建索引。
rails g migration add_user_id_to_cars user_id:integer
然后在生成的迁移中,添加
add_index :cars, :user_id
更新:
正如 Joseph 在评论中提到的,在当前版本的 Rails 中已经解决了手动添加索引的需要。我认为它是在 Rails 4 中引入的。您可以在 Rails官方迁移指南中阅读更多内容。它的要点是运行以下生成器
bin/rails g migration add_user_to_cars user:references
将创建一个迁移,其行类似于
add_reference :cars, :user, index: true
这将向汽车表中添加一user_id
列,并且还将标记该列以进行索引。