Как я могу использовать after_save_callback_chain? - PullRequest
2 голосов
/ 22 марта 2011

Основная документация описывает это при отладке обратных вызовов, но, похоже, его не существует:

http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

Я пытался использовать, как в примере, и он возвращает меня:

ruby-1.8.7-p330 :026 > Device.after_save_callback_chain
NoMethodError: undefined method `after_save_callback_chain' for #<Class:0x104bc1060>
    from /rvm/gems/ruby-1.8.7-p330/gems/activerecord-3.0.5/lib/active_record/base.rb:1008:in `method_missing'
    from (irb):26

1 Ответ

3 голосов
/ 25 марта 2011

Похоже, этот метод исчез в Rails 3. Ранее я использовал следующее:

Model._save_callbacks.select { |callback| callback.kind.eql?(:after) }

Это даст вам любые обратные вызовы after_save.Затем вы можете получить дополнительную информацию, например, вызываемый процесс, проверив атрибут .filter:

Model._save_callbacks.select { |callback| callback.kind.eql?(:after) }.collect(&:filter)

Надеюсь, у кого-то есть более хороший ответ, чем этот.

Этот _#{kind}_callbacks метод определен в ActiveSupport. Я думаю, что вы можете делать аналогичные вещи с контроллерами и так далее.

...