Допустим, у меня есть курс, в который студенты могут записаться через членство (например, has_and_belongs_to_many Relationsip курсов и студентов). Некоторые членства предназначены для учеников, которые только наблюдают за классом (не за кредит и т. Д.), Поэтому:
class Course < ActiveRecord::Base
has_many :memberships
has_many :students,
:through => :memberships
has_many :observers,
:through => :memberships,
:source => :student,
:conditions => { :memberships => { :observer => true }}
end
Вот что прекрасно работает:
observers = Course.find(37).observers
Вот что не работает:
new_observer = Course.find(37).observers.build(:name => 'Joe Student')
Я бы подумал, что можно создать новые записи, используя ассоциацию, и это сгенерировало бы:
- Новая студенческая запись («Джо Студент»)
- Новая запись о членстве (course_id = 37, student_id = (joe), наблюдатель = true)
Но вместо этого я получаю:
ActiveRecord::AssociationTypeMismatch: Membership expected, got Array
Я уверен, что я полностью сбит с толку, как это и был бы признателен за любые идеи! Я также пытался сделать это с именованными областями в модели Membership, но я не могу заставить has_many использовать область в ассоциации.
Большое спасибо за любую возможную помощь!