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.

has_many :through 関連付け

Posted at
class Physician < ApplicationRecord
  has_many :appointments
  has_many :patients, through: :appointments
end

class Appointment < ApplicationRecord
  belongs_to :physician
  belongs_to :patient
end

class Patient < ApplicationRecord
  has_many :appointments
  has_many :physicians, through: :appointments
end

has_many :through関連付けは、他方のモデルと「多対多」のつながりを設定する場合によく使われます。

この関連付けでは、2つのモデルの間に「第3のモデル」(joinモデル)が介在し、それを経由(through)して相手のモデルの「0個以上」のインスタンスとマッチします

多対多の問題点

両者のエンティティが共通キーとなる列を保持していないため、両エンティティを結合した情報を得ることができない。

出典

関連付けで他のモデルも呼び出すことができる。

through: :sectionsを指定することにより、Railsは以下の文を理解できるようになります。

@document.paragraphs

出典

気づき

関連実態を設けることで他のモデルを呼ぶことができるのか。

class Physician < ApplicationRecord
  has_many :appointments
  has_many :patients, through: :appointments
end

class Appointment < ApplicationRecord
  belongs_to :physician
  belongs_to :patient
end

class Patient < ApplicationRecord
  has_many :appointments
  has_many :physicians, through: :appointments
end

through:を設定することで関連実態を設定できる。

感想

まだまだ気づけていないことが多そうだ。
実践しつつ学んでいきたい。

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?