我有一个控制器,它有很多操作(比如action1
、action2
、action3
和action4
)。我有一个before_action
过滤器,我想排除一些行动,接近:
before_action :filter_thing, except: [:action3, :action4]
但是,我希望对action2
有条件地调用过滤器。
我试着简单地把它分成两个before_action
,但第二个似乎覆盖了第一个;在下面的代码中,没有为action1
调用filter_thing
:
before_action :filter_thing, except: [:action3, :action4]
before_action :filter_thing, only: [:action2], unless: :should_not_filter?
我想也许我可以使用条件skip_before_action
:
skip_before_action :filter_thing, only: :action2, if: :should_not_filter?
但它似乎忽略了if:
参数。
有没有一种方法可以有条件地将过滤器应用于某些操作?
2条答案
按热度按时间chhkpiq41#
这是我想出的解决办法:
我仍然不完全满意,因为上面的内容令人费解,坚韧阅读。
oxcyiej72#
派对迟到了,但你可以试试这个。没有测试BTW:
动作名
来自API指南:
返回此控制器正在处理的操作的名称。