2012-11-02 113 views
0

我在我的应用程序控制器中加载的lib目录中有一个自定义模块。我开始使用cancan,现在我的自定义模块中的所有操作都出现Access Denied错误。我不想让cancan检查我的自定义模块上的授权。解决这个问题的一种方法是使用except => [:action_name_in_my_custom_module],但是我在许多地方都有很多操作在我的应用程序中使用。我需要更好的解决方案。Cancan授权自定义模块

回答

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 

我相信它需要包含您的过滤器之前被定义