0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2021-10-07

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だけではなくしっかりと公式のドキュメントを読んでいく癖もつけていきたいです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?