У меня есть таблица отраслей и я отслеживаю ее конкурентов, которые также являются отраслями.Это через таблицу сопоставления industry_competitors, в которой присутствуют industry_id и Competitor_id.Я хочу, чтобы papertrail отслеживал ассоциации и диссоциации отраслевых конкурентов.
class Industry < ApplicationRecord
has_many :industry_competitors, dependent: :destroy
has_many :competitors, through: :industry_competitors
end
class IndustryCompetitor < ApplicationRecord
has_paper_trail
belongs_to :industry
belongs_to :competitor, class_name: "Industry"
end
Код моего контроллера как таковой.
competitors = ::Industry.where(id: params[:competitor_ids])
@industry.competitors = competitors
@industry.save
Каждый раз, когда передается весь список конкурентов.Если я пытаюсь отсоединить нескольких конкурентов (не передавая идентификаторы контроллеру) из отрасли, запускается запрос «Удалить».
DELETE FROM `industry_competitors` WHERE `industry_competitors`.`industry_id` = 4559 AND `industry_competitors`.`competitor_id` = 4564
Я подозреваю, потому что activerecord вызывает «удалять», а не «уничтожать»«обратные вызовы этой бумажной трассы не запускаются, поэтому изменения не отслеживаются.Если есть способ вызвать удалить явно (с минимальными изменениями кода).Или есть ли способ для бумажного следа отслеживать удаление?