2011-05-02 3 views

답변

5
before_filter {authenticate_user! || authenticate_admin!} 

proc를 before_filter 메서드에 전달하면 질문에 제공 한 것과 가장 가까운 것이됩니다.

+0

authenticate_user! || authenticate_admin! 이 작동하지 않습니다. 자원이 사용자가 아니라면 authenticate_admin을 확인하지 않을 것입니다! Unauthorized 상태가됩니다. –

-2

이 상징, :foo == true는 유효하다. 따라서, 귀하의 예는 언제나 같은 시도 before_filter :authenticate_user!

동일시한다 (여기 셋업에 대한 확신을 ..) :

if method_defined?(:authenticate_user!) 
    before_filter :authenticate_user! 
else 
    before_filter :authenticate_admin! 
end 

당신은 정의 된 두 가지 방법을 다음 authenticate_user!을 실행하려면 경우 반환하는 false 일 경우 authenticate_admin!을 실행하고/admin을 확인하고 before_filter을 실행하여 authenticate! 메서드를 하나만 만듭니다.

+1

': foo == true'는 사실이 아닙니다 (말장난은 아닙니다). irb로 확인하십시오. 아마도 ": foo는 참된 가치입니다."라고 말하고 싶었을 것입니다. – whitequark

6
before_filter :do_authentication 

def do_authentication 
    authenticate_user! || authenticate_admin! 
end 
관련 문제