belongs_to
関連付けassociation_id
には、対応するテーブルの列が必要です。車はユーザーに属しているため、車のテーブルにはuser_id
列が必要です。これには 2 つの方法があります。
まず、モデルを作成するときに列を生成できます
rails g model car user_id:references
または、Richard Brown の回答のようにモデルを作成した後に user_id を追加するだけです。integer
の代わりにを使用する場合はreferences
、自分でインデックスを作成する必要があることに注意してください。
rails g migration add_user_id_to_cars user_id:integer
次に、生成された移行で、追加します
add_index :cars, :user_id
アップデート:
ジョセフがコメントで述べたように、インデックスを手動で追加する必要性は、Rails の現在のバージョンで既に対処されています。Rails 4 で導入されたと思います。詳細については、Rails の公式ガイド for migrations を参照してください。その要点は、次のジェネレーターを実行することです
bin/rails g migration add_user_to_cars user:references
次のような行で移行を作成します
add_reference :cars, :user, index: true
これにより、cars テーブルに列が追加user_id
され、その列がインデックス付けされるようにマークされます。