¿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!