在控制器本身中访问 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_authorization
的 except
部分中的动作,或其他任何内容。我的问题是,如何以 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 上下文中可用的任何其他内容。
所以我有一个控制器,比如说
class RandomActionController < ApplicationController
并且我在 ApplicationController
中有一个方法 check_authorization
,我在 RandomActionController
中将其用作
before_action :check_authorization, except: [:create, :get_actions, ..]
现在在 RandomActionController
中的另一个动作中,我可能正在构建一组动作,但不包括 check_authorization
的 except
部分中的动作,或其他任何内容。我的问题是,如何以 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 上下文中可用的任何其他内容。