【超初心者向け】belongs_toとhas_many、アソシエーションってなに?


belongs_toとhas_many アソシエーションについて

belongs_toとhas_manyが「あれ?どっちがどっちだっけ?」となっていたので、備忘録として記載。

そもそも関連付け(アソシエーション)とは?

テーブル同士に関係があることを表現すること。

例えば、茶川さんという著者(author) がいて、羅生マンという本(book)を書いていたとする。(※架空の著者・本です。)

茶川さんはauthorテーブル、羅生マンはbook テーブルにそれぞれ保存されます。この状態は、一人の作者に対して一冊の本なので、「1対1」です。

ここで、茶川さんが「蜘蛛と糸」という本(book)を書いたとする。
すると、bookテーブルには新たに「蜘蛛と糸」という本が追加されるので、
一人の著者に対して複数の本が関連付いていることになります。
これが「1対多」の関係になるということになります。この際に、model 記載するのが「belongs_to」と「has_many」ということになります。
今回の例でいうと、一人の著者が複数の本を書いている(ここでは都合よく本が著者に従属していると考える)ため、

belongs_to・・・book
has_many・・・author

ということになります。

つまり、それぞれのmodel 記載する場合は、このように記載しましょう。

class Autor < ApplicationRecord
     has_many :books
#bookモデルだが、1対多の「多」に該当するため、ここではbooksになる。has_oneを用いる場合は「book」
end
class Book < ApplocationRecord
     belongs_to :autor
end

以上簡単ではありますが、自分が忘れがちなポイントに関して書き留めておきました。
自分と同じ初学者の方のとっかかりとして使用していただければ幸いです。また、個人的にはQiitaだけではなくしっかりと公式のドキュメントを読んでいく癖もつけていきたいです!