Описание тега has-many-through

В Ruby on Rails ассоциация has_many:through часто используется для установки соединения "многие ко многим" с другой моделью. Эта ассоциация указывает, что декларируемая модель может быть сопоставлена ​​с нулем или более экземплярами другой модели, пройдя через третью модель.

В Ruby on Rails ассоциация has_many:through часто используется для установки соединения "многие ко многим" с другой моделью. Эта ассоциация указывает, что декларируемая модель может быть сопоставлена ​​с нулем или более экземплярами другой модели, пройдя через третью модель.

Например, рассмотрим медицинскую практику, когда пациенты записываются на прием к врачу. Соответствующие объявления ассоциации могут выглядеть так:

class Physician < ActiveRecord::Base
  has_many :appointments
  has_many :patients, :through => :appointments
end

class Appointment < ActiveRecord::Base
  belongs_to :physician
  belongs_to :patient
end

class Patient < ActiveRecord::Base
  has_many :appointments
  has_many :physicians, :through => :appointments
end

Коллекцией моделей соединения можно управлять через API. Например, если вы назначите

physician.patients = patients

новые модели соединения создаются для вновь связанных объектов, и если некоторые из них исчезли, их строки удаляются.