我有一个控制器,我必须在其中访问我的回调列表。
我用它来过滤它们:
_process_action_callbacks.select{|f| f.kind != :around}
我也试图在选项上过滤它们(例如,在' if'以及除非'除非'数组)。
我试过这个
_process_action_callbacks.select{|f| f.if.any? }
但显然没有'如果'方法
我感到困惑,因为我有这个:
_process_action_callbacks.select{
|f| f.kind != :around
}.first
=> #<ActiveSupport::Callbacks::Callback:0x007fd1a16295d8
@chain_config=
{:scope=>[:kind],
:terminator=>
#<Proc:0x007fd1928375c8@/Users/name/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/actionpack-4.1.0/lib/abstract_controller/callbacks.rb:12 (lambda)>,
:skip_after_callbacks_if_terminated=>true},
@filter=:foo,
@if=["action_name == 'create'"], # 'if' seems present
...
还有这个:
_process_action_callbacks.select{|f| f.kind != :around}.first.instance_variables
=> [:@chain_config, :@name, :@kind, :@filter, :@key, :@if, :@unless]
有没有办法获得选项或者&#39; if&#39;回调?
答案 0 :(得分:1)
是的,accessor
没有reader
或@if
方法,已选中here。但您仍然可以使用instance_variable_get
方法获取它。
_process_action_callbacks.select do |f|
f.instance_variable_get(:@if).any?
end