Как я могу создать новые записи с помощью 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 использует область в ассоциации.

Большое спасибо за любую возможную помощь!

Ответы на вопрос(1)

Ваш ответ на вопрос