RAILS 6 - Как обновить таблицу HAS_MANY THROUGH? - PullRequest
0 голосов
/ 06 апреля 2020

Допустим, у меня есть этот пуполярный базис c пример:

enter image description here

С миграциями:

class CreateAppointments < ActiveRecord::Migration[5.0]
  def change
    create_table :physicians do |t|
      t.string :name
      t.timestamps
     end

  create_table :patients do |t|
    t.string :name
    t.timestamps
  end

  create_table :appointments do |t|
    t.belongs_to :physician
    t.belongs_to :patient
    t.datetime :appointment_date
    t.timestamps
  end
end
end

Мой Единственный вопрос здесь, что будет команда для создания нового отношения между врачом и пациентом, но также обновить поле встречи_дата в таблице "встречи" ?

enter image description here

Ответы [ 2 ]

2 голосов
/ 06 апреля 2020

Есть несколько способов.

1) Через экземпляр Physician

Предполагается, что у вас есть physician и patient экземпляр

physician.appointments.create(patient: patient, appointment_date: <INSERT DATE HERE>)

2) Через экземпляр пациента

то же самое, что и 1, но ассоциация переворачивается

Если у вас есть physician и patient экземпляр

patient.appointments.create(physician: physician, appointment_date: <INSERT DATE HERE>)

3) Использование модели встреч

аналогично 1, но ассоциация переворачивается

Если у вас есть physician и patient экземпляр

Appointment.create(physician: physician, patient: patient, appointment_date: <INSERT DATE HERE>)

1 голос
/ 06 апреля 2020

Вы можете сделать это легко, как показано ниже. Я думаю, у вас уже есть врач и пациент в базе данных -

@physycian  = Physician.last
@patient    = Patient.last
@physycian.appointments.create(patient_id: @patient.id, appointment_date: Time.current )

Также можно сделать с помощью пациента

@patient.appointments.create(physycian_id: @physycian.id, appointment_date: Time.current )
...