Как сделать рубин на рельсах
http://guides.rubyonrails.org/association_basics.html
На основе приведенного выше примера я создал:
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
Кто-нибудь может подсказать мне, как я могу выполнить каскадное удаление.
если я удаляю пациента, я хочу удалить все встречи для пациента. Нужно ли где-нибудь использовать зависимое ключевое слово? Может кто-нибудь продемонстрировать, как это решить.
Как удалить все встречи для конкретного пациента?
Заранее спасибо!
1 ответ
class Patient < ActiveRecord::Base
has_many :appointments, dependent: :destroy
has_many :physicians, through: :appointments
end
Patient.find(id).destroy
Это должно работать для вас. Убедитесь, что вы используете destroy
и не delete
потому что если вы используете delete, вы не получите ожидаемого каскадного эффекта.
Обновление 2:
Если вы хотите уничтожить все встречи, но не пациента, вы можете сделать это:
Patient.find(id).appointments.destroy_all