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:
を設定することで関連実態を設定できる。
感想
まだまだ気づけていないことが多そうだ。
実践しつつ学んでいきたい。