跳至内容 跳至搜索
方法
#
A
B
P
S

实例公共方法

_insert_callbacks(callbacks, block = nil)

获取回调名称和一个可选的回调 proc,对它们进行规范化,然后对每个回调调用该块。这使我们能够抽象出使用它的几个方法中的规范化过程。

参数

  • callbacks - 一个回调数组,最后一个参数是一个可选的选项哈希。

  • block - 一个将被添加到回调中的 proc。

块参数

  • name - 要添加的回调。

  • options - 添加回调时使用的选项哈希。

# File actionpack/lib/abstract_controller/callbacks.rb, line 120
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

_normalize_callback_options(options)

如果使用了 :only:except,则将选项转换为 ActiveSupport::Callbacks:if:unless 选项。

基本思路是 :only => :index 会被转换为 :if => proc {|c| c.action_name == "index" }

注意,如果同时使用 :only:if:only 具有更高的优先级。

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

注意,如果同时使用 :if:except:if 具有更高的优先级。

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

选项

  • only - 回调应仅为此操作运行。

  • except - 回调应为所有操作运行,除了此操作。

# File actionpack/lib/abstract_controller/callbacks.rb, line 93
def _normalize_callback_options(options)
  _normalize_callback_option(options, :only, :if)
  _normalize_callback_option(options, :except, :unless)
end

after_action(names, block)

在操作后追加一个回调。有关参数详情,请参阅 _insert_callbacks

# File actionpack/lib/abstract_controller/callbacks.rb, line 173
      

append_after_action(names, block)

在操作后追加一个回调。有关参数详情,请参阅 _insert_callbacks

# File actionpack/lib/abstract_controller/callbacks.rb, line 194
      

append_around_action(names, block)

在操作周围追加一个回调。有关参数详情,请参阅 _insert_callbacks。对于 before、after 和 around,都设置了 before_actionprepend_before_actionskip_before_action 等。

# File actionpack/lib/abstract_controller/callbacks.rb, line 223
      

append_before_action(names, block)

在操作前追加一个回调。有关参数详情,请参阅 _insert_callbacks

如果回调渲染或重定向,则操作不会运行。如果还有其他回调计划在该回调之后运行,它们也会被取消。

# File actionpack/lib/abstract_controller/callbacks.rb, line 162
      

around_action(names, block)

在操作周围追加一个回调。有关参数详情,请参阅 _insert_callbacks

# File actionpack/lib/abstract_controller/callbacks.rb, line 201
      

before_action(names, block)

在操作前追加一个回调。有关参数详情,请参阅 _insert_callbacks

如果回调渲染或重定向,则操作不会运行。如果还有其他回调计划在该回调之后运行,它们也会被取消。

# File actionpack/lib/abstract_controller/callbacks.rb, line 132
      

prepend_after_action(names, block)

在操作后前置一个回调。有关参数详情,请参阅 _insert_callbacks

# File actionpack/lib/abstract_controller/callbacks.rb, line 180
      

prepend_around_action(names, block)

在操作周围前置一个回调。有关参数详情,请参阅 _insert_callbacks

# File actionpack/lib/abstract_controller/callbacks.rb, line 208
      

prepend_before_action(names, block)

在操作前前置一个回调。有关参数详情,请参阅 _insert_callbacks

如果回调渲染或重定向,则操作不会运行。如果还有其他回调计划在该回调之后运行,它们也会被取消。

# File actionpack/lib/abstract_controller/callbacks.rb, line 143
      

skip_after_action(names)

跳过操作后的回调。有关参数详情,请参阅 _insert_callbacks

# File actionpack/lib/abstract_controller/callbacks.rb, line 187
      

skip_around_action(names)

跳过操作周围的回调。有关参数详情,请参阅 _insert_callbacks

# File actionpack/lib/abstract_controller/callbacks.rb, line 216
      

skip_before_action(names)

跳过操作前的回调。有关参数详情,请参阅 _insert_callbacks

# File actionpack/lib/abstract_controller/callbacks.rb, line 155