Я пишу плагин, который обеспечивает черчение для моделей. Действие удаления - это черновое действие, и я не всегда хочу удалять источник, пока это удаление не будет опубликовано. Поэтому я написал свой собственный метод уничтожения, чтобы помочь с этим. Все работает точно так, как я хочу, за исключением того, что пользовательские обратные вызовы для :before_destroy
и :after_destroy
больше не запускаются.
Любые идеи о том, как:
- привязать обратные вызовы к моему методу уничтожения
- работает какой-то alias_method_chain voodoo
- получить список обратных вызовов моделей, чтобы я мог называть их ручными
- решить эту проблему другим способом
Вот мой метод уничтожения:
def destroy
if self.attribute_names.include?('draft') && self.skip_draft == false
if handle_destroy # if true is returned
super # go ahead and destroy as normal
end
else
super
end
end
Обновление: я только что нашел это:
правильный способ переопределить activerecordbasedestroy , но похоже, что предложенный метод также не подходит для обратных вызовов. Есть ли способ взять мой торт и съесть его тоже?