我目前有我的控制器可以使用此代码运行的过滤器列表:
MyController._process_action_callbacks.select{
|f| f.filter.is_a? Symbol
}.map(&:filter)
但我也希望过滤他们的行动。即像这样的东西:
MyController._process_action_callbacks.select{
|f| (f.filter.is_a?(Symbol)
&& f.actions.include?(my_action)) # filter on action
}.map(&:filter)
显然不起作用。我怎样才能做到这一点?
我唯一发现的是使用instance_variable_get('@if')
,但这并不令人满意,因为它提供了一个字符串(我可以eval
或解析它,但这并不是似乎是惯用的),我也必须为unless
部分做。