Вы можете взять на себя ответственность за удаление / уничтожение зависимостей самостоятельно и убедиться, что они срабатывают после того, как вы закончите do_something_on_activity_object_related
Так что вместо
has_many :activity_object_activities,:dependent => :destroy
has_many :activity_objects, :through => :activity_object_activities
after_destroy :do_something_on_activity_object_related
сделайте следующее:
has_many :activity_object_activities
has_many :activity_objects, :through => :activity_object_activities
after_destroy do
do_something_on_activity_object_related
ActivityObjectActivity.destroy_all(activity_id: self.id)
end
При удалении элементов из объединяющей таблицы у вас все будет в порядке, используя delete_all
вместо destroy_all
.Но вы использовали в своем примере уничтожение, чтобы я использовал это и здесь.