Cómo rellenar campos en una tabla has_many a través de unir

Tengo una pregunta relacionada con la asociación de registros activos, refiriéndose a esta parte de la documentación de Rails:

http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association

Si tenemos tres modelos:

class Physician  :appointments end class Appointment < ActiveRecord::Base belongs_to :physician belongs_to :patient end class Patient  :appointments end 

La documentación dice que la colección de modelos de unión se puede administrar a través de la API de esta manera:

 physician.patients = patients 

pero, ¿qué sucede si el modelo de cita, como en el ejemplo vinculado, tiene un campo llamado cita_fecha y deseo crear una nueva cita dada el Médico y el Paciente en una fecha específica? El siguiente código creará un registro en la tabla de citas, pero ¿cómo rellenar la cita con cita también en el tercer paso?

 physician = Physician.first patient = Patients.first physician.patients << patient 

¿Existe algo como esto?

 physician.patients.create( :patient => patient, 'appointment.appointment_time' => appointment_time ) 

Pregunta anterior, pero debe responderse, aunque puede asignar directamente a un physician.patients con el método << , crea una cita sin valores, que puede o no ser válida según las reglas comerciales. Así que la forma más habitual de crear la asociación sería construir la cita en uno de ellos.

 demento = Physician.find_by_name('Dr. Demento'} patient = Patient.new { :name => 'Mrs. Holloway' } patient.appointments << Appointment.new { :physician => demento, :appointment_time => appt_time } 

podría combinar las líneas 2 y 3, por supuesto, si así lo desea.

la línea en los documentos a los que se refiere

 physician.patients = patients 

Creo que el caso de uso limitado para eso podría ser que si Demento tuviera 7 pacientes pero pierde a la Sra. Holloway debido a un desafortunado incidente con un experimento de rayos de muerte, podría hacer esto con una lista actualizada de los 6 pacientes existentes y sus citas preservarse, y las citas pasadas de la Sra. Holloway serían eliminadas automáticamente (para borrar cualquier registro de aquí, por razones de seguro de responsabilidad civil, solo Demento sería tan desagradable).

Desea considerar rutas anidadas, por ej.

 resources :physicians do resource :patients end 

Puedes usar cosas como form_for(@physician, @patient)

y url es como physician/1/patient/23

Para actualizar un paciente en el contexto de un médico.