我在我的应用程序控制器中加载的 lib 目录中有一个自定义模块。我开始使用 cancan,现在我的自定义模块中的所有操作都收到拒绝访问错误。我不想让 cancan 检查我的自定义模块的授权。解决此问题的一种方法是使用except => [:action_name_in_my_custom_module]
,但我在许多地方的应用程序中使用了很多操作。我需要一个更好的解决方案。
问问题
348 次
1 回答
0
假设您有一个控制器操作模块并且您将其包含在您的控制器中,您是否有理由没有将它们全部放入ApplicationController
?
您可以尝试的一件事是skip_before_filter
在模块中使用。这将在您包含 MyModule 的任何类上调用该方法:
module MyModule
def self.included(klass)
klass.class_eval <<-filters
skip_before_filter :filter_method_to_skip, only: [:method_a, :method_b, ...]
filters
end
end
class MyController < ApplicationController
before_filter :filter_method
include MyModule
end
我相信在定义过滤器之前需要包含它。
于 2012-11-02T01:36:08.400 回答