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

합니다.

관련 문제