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 1 year has passed since last update.

【Rails初心者】モデル同士の関連付け(Association)まとめ

Posted at

【Rails初心者】Associationまとめ

Markdown記法の学習もかねて、理解が浅い部分を自分なりにまとめてみた…

目次

  1. Associationとは?
  2. 必要な追記処理
  3. 具体例
  4. まとめ
  5. 参考サイト

1.Associationとは?

異なる 2 つのモデルの間に、1:N の関連性を持たせること

2.必要な追記

対象の model へ以下を記載する必要がある

  • has_many
  • has_many に付随する dependent: :destroy
  • belongs_to

3.具体例

例えば、Task管理を行うアプリがあるとする。
usertask の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.rbhas_many :taskを記載しているため、
      usertaskをたくさん持っているという考え方をする
  • dependent: :destroy

    • dependent: :destroyを追加することで、
      「親モデルを削除する際に、その親モデルに紐づく「子モデル」も一緒に削除できる」ようになる
      今回の場合は、userを削除するとuserに紐づくtaskも削除されるようになる
app/models/task.rb
class Task < ApplicationRecord
  belongs_to :user
end

Point

  • belongs_to :user
    • belongs_to :userについて 「belongs to」 を日本語に直訳すると、 「~に属している」 となる
      また、app/models/task.rbbelongs_to :userを記載しているため、
      taskuserに属しているという考え方をする

4.まとめ

ModelとModelを紐づけることを、Associationといい、
Associationをするために、has_many dependent: :destroy belongs_to を利用する!

記事の書き方について、見やすい記事を参考にブラッシュアップしないといけない…
見づらいや誤っている記載等あればコメント頂けると助かりますm(__)m

最終的には公式サイトから必要箇所を精査して、理解できるようになりたい!!

Pointに[note warn]使うのは良くない気もするが…

5.参考サイト

Markdown記法 サンプル集 - Qiita
Markdown記法 チートシート
[Rails] dependent: :destroy について

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?