Mam pytanie dotyczące aktywnego związku rekord, odnosząc się do tej części dokumentacji poręcze:jak wypełnić pola w has_many poprzez dołączyć tabelę
http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association
jeśli mamy trzy modele:
class Physician < ActiveRecord::Base
has_many :appointments
has_many :patients, :through => :appointments
end
class Appointment < ActiveRecord::Base
belongs_to :physician
belongs_to :patient
end
class Patient < ActiveRecord::Base
has_many :appointments
has_many :physicians, :through => :appointments
end
Dokumentacja mówi, że kolekcją modeli łączenia można zarządzać za pomocą api w następujący sposób:
physician.patients = patients
Ale co, jeśli model spotkania, podobnie jak w połączonym przykładzie, ma pole o nazwie date_zatrzymania i chcę utworzyć nową wizytę, biorąc pod uwagę lekarza i pacjenta w określonym dniu? Poniższy kod spowoduje utworzenie rekordu w tabeli spotkań, ale w jaki sposób wypełnić również termin appointment_date w trzecim kroku?
physician = Physician.first
patient = Patients.first
physician.patients << patient
Czy coś takiego istnieje?
physician.patients.create(:patient => patient, 'appointment.appointment_time' => appointment_time)
Używam również tego problemu ... Chcę zmienić domyślną wartość atrybutu w tabeli łączenia, ale tylko wtedy, gdy zostanie utworzony powiązany rekord (na przykład, jeśli zostanie utworzony pacjent, ustaw termin czas, ale w innych sytuacjach umawialiśmy się na nowe spotkania). – wulftone