Я буду моделировать мою проблему в следующем примере. Предположим, у меня есть student
s, которые могут быть связаны с course
s, а course
содержит более одного student
.Итак, между студентами и курсами много-много, рассмотрим следующий код:
# student.rb
class Student < ApplicationRecord
has_many :student_courses
has_many :courses, through: :student_courses
end
# student_course.rb
class StudentCourse < ApplicationRecord
belong_to :student
belong_to :course
end
# course.rb
class Course < ApplicationRecord
has_many :student_courses
has_many :students, through: :student_courses
end
Все вышесказанное в порядке, но пока я пытался удалить между нимиотношение и сделать обратный вызов в средней таблице, например
> c = Course.first
> c.students = [] # this perform a deletion correctly but can't be triggered by a call back
make students
, и пустой массив удаляет отношение правильно, но оно не вызывается обратным вызовом.в то время как использование StudentCenter.where(something).destroy_all
вызовет after_destroy
и т. д.
мой вопрос: как я могу использовать = []
и сохранить запуск, поскольку я каким-то образом нахожу манипуляцию на средней таблице немногошумно при чтении кода.Заранее спасибо.