Описание тега 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
новые модели соединения создаются для вновь связанных объектов, и если некоторые из них исчезли, их строки удаляются.