アソシエーションを設定したモデルに関する注意点(Ruby on Rails)

はじめに

Ruby on Railsのフォロワー機能作成のプラクティスをやっていて、これに何回か引っかかったのでその忘備録

アソシエーションを記述すると、子モデルに設定される制限について

belong_toを記述した、子モデルから作成したインスタンスは「外部キーに親のidが入っていないとテーブルに登録できない」

外部キーに親のidが入っていない状態で、savecreateでテーブルに登録しようとするとエラーになる。

外部キーに親のidが入っていない状態のインスタンスが作成されるとき

子モデル.newで、新規作成したインスタンスは、「外部キーがnilになる」

(逆にアソシエーションメソッドを介して作成したインスタンスには外部キーが最初から入る。)

外部キーに値をセットするには

作成したインスタンスを親の配列に追加する。

例)

child = Children.new(name: "田中子供")
parent = Parent.new(name: "田中親")
parent.children << child #これで外部キーに値がセットされる