在控制器本身中访问 before_action 的除外部分

Access the except part of before_action in the controller itself

所以我有一个控制器,比如说

class RandomActionController < ApplicationController

并且我在 ApplicationController 中有一个方法 check_authorization,我在 RandomActionController 中将其用作

before_action :check_authorization, except: [:create, :get_actions, ..]

现在在 RandomActionController 中的另一个动作中,我可能正在构建一组动作,但不包括 check_authorizationexcept 部分中的动作,或其他任何内容。我的问题是,如何以 hash/array 或任何其他形式获得这些操作?

您传递给 except 部分的是文字数组、字符串或符号。 Rails 不允许您 (afaik) 内省控制器回调以提取声明时使用的参数。

如果您希望能够重复使用它的操作列表,您需要将它 link 添加到一个标识符中。

例如我经常使用的模式:

class ApplicationController

  private

  def self.member_actions
    [:show, :edit, :destroy, :update]
  end

  def self.collection_actions
    [:new, :index, :create]
  end
end

class FooController < ApplicationController
  before_action :set_foo, only: member_actions

  def self.member_actions
    super + [:fuzzle, :wuzzle]
  end 
end

但是您也可以使用常量或在 class 上下文中可用的任何其他内容。