Как я могу создать новые записи с помощью has_many: through и honor: условий?
Позволять'скажем, у меня есть курс, в который студенты могут записаться через членство (например, has_and_belongs_to_many в отношении курсов и студентов). Некоторые членства предназначены для студентов, которые только наблюдают за классом (не для получения кредита и т. Д.), Поэтому:
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
я уверен, что яЯ полностью сбит с толку о том, как это и будет признателен за любые идеи! Я'мы также пытались сделать это с именованными областями в модели членства, но я могуКажется, что has_many использует область в ассоциации.
Большое спасибо за любую возможную помощь!