¿Cómo puedo crear nuevos registros con has_many: through y honor: conditions?

Digamos que tengo un curso en el que los estudiantes pueden inscribirse a través de una membresía (por ejemplo, has_and_belongs_to_manyrelación de cursos y estudiantes). Algunas membresías son para estudiantes que solo están observando la clase (no para crédito, etc.), así que:

class Course < ActiveRecord::Base
  has_many :memberships

  has_many :students,
           :through => :memberships

  has_many :observers,
           :through => :memberships,
           :source => :student,
           :conditions => { :memberships => { :observer => true }}
end

Esto es lo que funciona muy bien:

observers = Course.find(37).observers

Esto es lo que no funciona:

new_observer = Course.find(37).observers.build(:name => 'Joe Student')

Pensé que uno podría construir nuevos registros utilizando la asociación y eso habría generado:

Un nuevo récord de estudiante ('Joe Student')Un nuevo registro de membresía (course_id = 37, student_id = (joe), observador = true)

Pero en cambio me sale:

ActiveRecord::AssociationTypeMismatch: Membership expected, got Array

Estoy seguro de que estoy totalmente confundido acerca de cómo esto y apreciaría cualquier información! También traté de hacer esto con los ámbitos con nombre en el modelo de Membresía, pero parece que no puedo lograr que muchos tengan un ámbito en la asociación.

Muchas gracias por cualquier ayuda posible!

Respuestas a la pregunta(1)

Su respuesta a la pregunta