Spec-Zone.ru › Ruby on Rails 8.1

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

Открытые методы экземпляра

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

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

Параметры

  • callbacks — массив обратных вызовов с необязательным хешем параметров в качестве последнего аргумента.

  • block — proc, который следует добавить к обратным вызовам.

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

  • name — обратный вызов, который следует добавить.

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

_normalize_callback_options (options) Показать исходный код
# File actionpack/lib/abstract_controller/callbacks.rb, line 95
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 175
      

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

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

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

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

Добавляет обратный вызов вокруг действий. Подробности о параметрах см. в _insert_callbacks. настройте before_action, prepend_before_action, skip_before_action и т. д. для обратных вызовов до, после и вокруг действия.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Spec-Zone.ru

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