Spec-Zone.ru › Ruby on Rails 6.0

модуль AbstractController::Callbacks::ClassMethods

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

_insert_callbacks(callbacks, block = nil) { |callback, options| ... } Показать исходный код
# File actionpack/lib/abstract_controller/callbacks.rb, line 91
def _insert_callbacks(callbacks, block = nil)
  options = callbacks.extract_options!
  _normalize_callback_options(options)
  callbacks.push(block) if block
  callbacks.each do |callback|
    yield callback, options
  end
end

Принимает имена обратных вызовов и необязательный блок обратного вызова, нормализует их, а затем вызывает блок для каждого обратного вызова. Это позволяет нам абстрагировать нормализацию для нескольких методов, использующих её.

Параметры

  • callbacks - Массив обратных вызовов, с необязательным хэш-объектом параметров в качестве последнего параметра.

  • block - Блок обратного вызова, который необходимо добавить.

Параметры блока

  • name - Обратный вызов, который будет добавлен.

  • options - Хэш-объект параметров, используемых при добавлении обратного вызова.

_normalize_callback_options(options) Показать исходный код
# File actionpack/lib/abstract_controller/callbacks.rb, line 66
def _normalize_callback_options(options)
  _normalize_callback_option(options, :only, :if)
  _normalize_callback_option(options, :except, :unless)
end

Если используются :only или :except, преобразуйте параметры в :if и :unless параметры ActiveSupport::Callbacks.

Основная идея в том, что :only => :index преобразуется в :if => proc {|c| c.action_name == "index" }.

Обратите внимание, что :only имеет приоритет над :if, если они используются вместе.

only: :index, if: -> { true } # the :if option will be ignored.

Обратите внимание, что :if имеет приоритет над :except, если они используются вместе.

except: :index, if: -> { true } # the :except option will be ignored.

Параметры

  • only - Обратный вызов должен быть запущен только для данного действия.

  • except - Обратный вызов должен быть запущен для всех действий, кроме этого действия.

after_action(names, block) Показать исходный код
# File actionpack/lib/abstract_controller/callbacks.rb, line 147
      

Добавление обратного вызова после действий. Подробности параметров см. в #_insert_callbacks.

append_after_action(names, block) Показать исходный код
# File actionpack/lib/abstract_controller/callbacks.rb, line 168
      

Добавление обратного вызова после действий. Подробности параметров см. в #_insert_callbacks.

append_around_action(names, block) Показать исходный код
# File actionpack/lib/abstract_controller/callbacks.rb, line 196
      

Добавление обратного вызова вокруг действий. Подробности параметров см. в #_insert_callbacks.

append_before_action(names, block) Показать исходный код
# File actionpack/lib/abstract_controller/callbacks.rb, line 140
      

Добавление обратного вызова перед действиями. Подробности параметров см. в #_insert_callbacks.

Если обратный вызов рендерит или перенаправляет, действие не будет выполнено. Если запланированы дополнительные обратные вызовы, которые должны быть выполнены после этого обратного вызова, они также будут отменены.

around_action(names, block) Показать исходный код
# File actionpack/lib/abstract_controller/callbacks.rb, line 175
      

Добавление обратного вызова вокруг действий. Подробности параметров см. в #_insert_callbacks.

before_action(names, block) Показать исходный код
# File actionpack/lib/abstract_controller/callbacks.rb, line 111
      

Добавление обратного вызова перед действиями. Подробности параметров см. в #_insert_callbacks.

Если обратный вызов рендерит или перенаправляет, действие не будет выполнено. Если запланированы дополнительные обратные вызовы, которые должны быть выполнены после этого обратного вызова, они также будут отменены.

prepend_after_action(names, block) Показать исходный код
# File actionpack/lib/abstract_controller/callbacks.rb, line 154
      

Вставка обратного вызова после действий. Подробности параметров см. в #_insert_callbacks.

prepend_around_action(names, block) Показать исходный код
# File actionpack/lib/abstract_controller/callbacks.rb, line 182
      

Вставка обратного вызова вокруг действий. Подробности параметров см. в #_insert_callbacks.

prepend_before_action(names, block) Показать исходный код
# File actionpack/lib/abstract_controller/callbacks.rb, line 122
      

Вставка обратного вызова перед действиями. Подробности параметров см. в #_insert_callbacks.

Если обратный вызов рендерит или перенаправляет, действие не будет выполнено. Если запланированы дополнительные обратные вызовы, которые должны быть выполнены после этого обратного вызова, они также будут отменены.

skip_after_action(names) Показать исходный код
# File actionpack/lib/abstract_controller/callbacks.rb, line 161
      

Пропуск обратного вызова после действий. Подробности параметров см. в #_insert_callbacks.

skip_around_action(names) Показать исходный код
# File actionpack/lib/abstract_controller/callbacks.rb, line 189
      

Пропуск обратного вызова вокруг действий. Подробности параметров см. в #_insert_callbacks.

skip_before_action(names) Показать исходный код
# File actionpack/lib/abstract_controller/callbacks.rb, line 129
      

Пропуск обратного вызова перед действиями. Подробности параметров см. в #_insert_callbacks.

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

Spec-Zone.ru

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