アソシエーション

アソシエーション

アソシエーションとはモデルを利用したテーブル同士の関連付けのことです。
アソシエーションをモデルに定義することで、そのモデルに紐づく別のモデルの情報へアクセスできるようになります。

has_manyメソッド

投稿機能機能があるものを実装する際に、Userモデルの視点で考えると、あるユーザーの作成した投稿は複数個ある状態です。

つまり、1人のユーザーは複数の投稿を所有しています。

この状態のことを、has_manyの関係と言います。

この関連付けをするため、userと他のモデルとの間に「1対多」の繋がりを示すものが、has_manyメソッドと言います。

belongs_toメソッド

1つの投稿は、1人のユーザーが投稿したものです。

つまり、1つの投稿を複数人が投稿できないため、投稿は必ず1人のユーザーに所属します。

この状態のことをbelongs toの関係と言います。

「1対1」の具体資を似のが所属します。

has_oneメソッド

テーブルのつながりが、1対1の関係の時に使用するメソッドです。

中間テーブル

その名の通り2つのテーブルの中間にあるテーブルのことです。

中間テーブルは、多対多の関係にある2つのテーブルの間に挟まって、2つの組み合わせパターンだけをレコードとして保存します。

throughオプション

has_manyメソッドのthroughオプションは、モデルに多対多の関連を定義するときに利用します。throughという名前のとおり、「〜を経由する」という意味です。

多対多の関係にある2つのテーブルのモデルでは、has_manyメソッドによる1対多のアソシエーションを互いに定義するのと合わせて、throughオプションによって経由する中間テーブルを指定します。