Spec-Zone.ru › Ruby on Rails 5.0

модуль ActiveSupport::Callbacks

Обработчики событий — это крючки кода, которые выполняются в ключевые моменты жизненного цикла объекта. Типичный пример использования — определение в базовом классе набора обработчиков событий, относящихся к предоставляемой функциональности, чтобы подклассы могли устанавливать обработчики, расширяющие или изменяющие базовую функциональность, без необходимости переопределять или переопределять методы базового класса.

Включение этого модуля позволяет вам определить события в жизненном цикле объекта, которые будут поддерживать обработчики событий (через ClassMethods.define_callbacks), установить методы экземпляра, проги или объекты обратного вызова, которые будут вызываться (через ClassMethods.set_callback), и запустить установленные обработчики в соответствующее время (через run_callbacks).

Поддерживаются три вида обработчиков событий: обработчики «до» — выполняются до определенного события; обработчики «после» — выполняются после события; и обработчики «вокруг» — блоки, которые окружают событие, вызывая его при передаче в них.

Код обработчика событий может содержаться в методах экземпляра, прогах или лямбда-выражениях или объектах обратного вызова, которые отвечают на определенные предварительно заданные методы. Подробнее см. ClassMethods.set_callback.

class Record
  include ActiveSupport::Callbacks
  define_callbacks :save

  def save
    run_callbacks :save do
      puts "- save"
    end
  end
end

class PersonRecord < Record
  set_callback :save, :before, :saving_message
  def saving_message
    puts "saving..."
  end

  set_callback :save, :after do |object|
    puts "saved"
  end
end

person = PersonRecord.new
person.save

Вывод:

saving...
- save
saved

Константы

CALLBACK_FILTER_TYPES

Публичные методы экземпляра

run_callbacks(kind, &block) Показать исходный код
# File activesupport/lib/active_support/callbacks.rb, line 89
def run_callbacks(kind, &block)
  send "_run_#{kind}_callbacks", &block
end

Выполняет обработчики событий для данного события.

Вызывает обработчики «до» и «вокруг» в порядке их установки, передает блок (если он задан), а затем выполняет обработчики «после» в обратном порядке.

Если цепочка обработчиков была прервана, возвращает false. В противном случае возвращает результат блока, nil, если обработчики не были установлены, или true, если обработчики были установлены, но блок не задан.

run_callbacks :save do
  save
end

© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API