【问题标题】:How to use rails before_action conditional for only some actions?如何仅对某些操作使用有条件的rails before_action?
【发布时间】:2018-03-21 18:44:29
【问题描述】:

我有一个包含许多操作的控制器(比如action1action2action3action4)。我有一个 before_action 过滤器,我想排除一些操作,接近:

before_action :filter_thing, except: [:action3, :action4]

但是,我希望有条件地为 action2 调用过滤器。

我尝试简单地将它分成两个before_actions,但第二个似乎覆盖了第一个;在以下代码中,filter_thing 未被调用为 action1

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: 参数。

有没有办法有条件地将过滤器仅应用于某些操作?

【问题讨论】:

    标签: ruby-on-rails before-filter


    【解决方案1】:

    这是我想出的解决方法:

    before_action :filter_thing,
                  except[:action3, :action4],
                  unless: -> { params[:action] == "action2" && should_not_filter? }
    

    我仍然不完全满意,因为以上内容令人费解且难以阅读。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      • 1970-01-01
      • 2016-04-04
      • 1970-01-01
      • 2012-03-29
      相关资源
      最近更新 更多