LoginSignup
0
0

More than 3 years have passed since last update.

アソシエーション(1対多の関係)

Last updated at Posted at 2020-11-16

アソシエーション(1対多の関係)

1.アソシエーションとは?

 簡単に表現すると「各モデル同士を関連付ける」ということである。つまり、テーブル同士で関連付けておき、一方のモデルからもう一方のモデルにアクセスできるようにすることである。

例. 1人のuserが複数のコメントを所有するパターン(1対多の関係)
aso0.png
 →「Aさん」とAさんのコメントである「おはよう」、「こんばんは」を結びつける。
 →「Bさん」とBさんのコメントである「こんにちは」、「さようなら」を結びつける。

2.has_manyメソッドとbelongs_toメソッド

では、どのようにアソシエーションをコードで再現するのか示してみる。
上記の1人のuserが複数のコメントを所有するパターン(1対多の関係)で考えてみる。

(1) has_many

aso01.png

  ※上記の図はAさんAさんが所有するコメントの関係であるが、Bさんも上記の図のように考える。

#Userモデル  
class User < ApplicationRecord
 has_many :comments       #1人のuserが複数のcommentを所有するので複数形のcommentsになる。
end

(2) belongs_to

aso02.png
  ※上記の図は「おはよう」のコメントAさんに所有されている関係であるが、その他のコメントも上記の図のように考える。

#Commentモデル
class Comment < ApplicationRecord
 belongs_to :user      #1つcommentは1人のuserが所有するので単数形のuserになる。
end

3.さいごに

 アソシエーションの1対多における基本的な考え方を説明しました。今後も、多対多の関係など少し応用的な投稿にも継続的にしていきたいと思います。また、。誤り等ご指摘ありましたらコメントお願いします!

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