【Rails初心者】Associationまとめ
Markdown記法の学習もかねて、理解が浅い部分を自分なりにまとめてみた…
目次
- Associationとは?
- 必要な追記処理
- 具体例
- まとめ
- 参考サイト
1.Associationとは?
異なる 2 つのモデルの間に、1:N の関連性を持たせること
2.必要な追記
対象の model へ以下を記載する必要がある
has_many
-
has_many
に付随するdependent: :destroy
belongs_to
3.具体例
例えば、Task管理を行うアプリがあるとする。
user
とtask
の2つのモデルが 1:Nの関係の場合
それぞれのmodelに必要な要素を追加していく
app/models/user.rb
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
#ここから下の部分(has_many以降)を追記
has_many :task, dependent: :destroy
end
Point
-
has_many :task
-
has_many :task
について 「has_many」 を日本語に直訳すると、 「たくさん持っている」 となる
また、app/models/user.rb
にhas_many :task
を記載しているため、
user
がtask
をたくさん持っているという考え方をする
-
-
dependent: :destroy
- dependent: :destroyを追加することで、
「親モデルを削除する際に、その親モデルに紐づく「子モデル」も一緒に削除できる」ようになる
今回の場合は、user
を削除するとuser
に紐づくtask
も削除されるようになる
- dependent: :destroyを追加することで、
app/models/task.rb
class Task < ApplicationRecord
belongs_to :user
end
Point
-
belongs_to :user
-
belongs_to :user
について 「belongs to」 を日本語に直訳すると、 「~に属している」 となる
また、app/models/task.rb
にbelongs_to :user
を記載しているため、
task
はuser
に属しているという考え方をする
-
4.まとめ
ModelとModelを紐づけることを、Associationといい、
Associationをするために、has_many
dependent: :destroy
belongs_to
を利用する!
記事の書き方について、見やすい記事を参考にブラッシュアップしないといけない…
見づらいや誤っている記載等あればコメント頂けると助かりますm(__)m
最終的には公式サイトから必要箇所を精査して、理解できるようになりたい!!
Pointに[note warn]使うのは良くない気もするが…
5.参考サイト
Markdown記法 サンプル集 - Qiita
Markdown記法 チートシート
[Rails] dependent: :destroy について