第一回チキチキ!! Ruby on Rails アソシエーション
アソシエーションとは、テーブル同士の関連付けのこと
アソシエーションの定義には has_manyメソッドとbelongs_toメソッドを使います
has_manyメソッド
TwitterなどのSNSでは1人のユーザー(user)はたくさん投稿(tweet)できるかと思います。
つまり、1人のユーザーは複数の投稿を持っていることになります。
この関連付けをするため、userと他のモデルとの間に「1対多」のつながりがあることを示すのがhas_manyメソッドです。
belongs_toメソッド
1つの投稿は、1人のユーザーが投稿したものです。
つまり1つの投稿を複数人が投稿できないため、投稿は必ず1人のユーザーに所属します。
Tweetモデルと他のモデル(User)との間に「1対1」のつながりがあることを示すのがbelongs_toメソッドです。
もう少し噛み砕いていきます。学校の授業を例にしてみましょう。
例えば先生1人は複数人の生徒に授業を行います。
先生
↙️ ↓ ↘️
生徒1 生徒2 生徒3
1 対 多
(先生) (生徒)
先生の視点からはhas_manyの関係になります。
今度は生徒の視点から見てみましょう。
生徒1 生徒2 生徒3
↘️ ↓ ↙️
先生
1 対 1
(生徒1)(先生)
当然ですが、生徒1は先生の話しか聞いていません。
他の生徒と話していたら怒られてしまいますからね(笑)
よって、生徒視点からはbelongs_toの関係になります。
今回は以上になります。
何か間違っていたり、アイデアがあれば遠慮なく教えください!