2012-11-02 160 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 

我相信它需要包含您的過濾器之前被定義