Как обойти [] = при удалении промежуточных рельсов отношений - PullRequest
0 голосов
/ 14 мая 2019

Я буду моделировать мою проблему в следующем примере. Предположим, у меня есть 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 и т. д.

мой вопрос: как я могу использовать = [] и сохранить запуск, поскольку я каким-то образом нахожу манипуляцию на средней таблице немногошумно при чтении кода.Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...