2013-02-24 2 views
2

Ruby on Rails의 before_filter 메소드를 사용하여 여러 항목 중 하나가 사실인지 확인할 수 있습니까? 특히, 사용자와 관리자를 정의한 Devise를 사용하고 있으며 특정 컨트롤러에 액세스하는 사람이 누구인지 확인하고 싶습니다. 나는 문서에서 응답을 찾았으므로 아무런 운이 없었습니다. (도움이된다면)before_filter를 사용하여 관리자 나 사용자가 로그인했는지 확인하십시오.

덕분에, 여기 내 버전입니다 :

  • 루비 1.9.3
  • 레일 3.2.6
  • 고안 2.2.3

답변

4

그것은 가능하다. 나는 실제로 이것을 답으로 두는 것을 주저합니다. 왜냐하면 이것보다 더 간단하지 않기 때문입니다. 사용자의 역할에 따라 true 또는 false를 반환하는 admin? 메서드가 있다고 가정합니다.

before_filter :check_if_admin 

protected 

def check_if_admin 
    if signed_in? 
    raise 'Only admins allowed!' unless current_user.admin? 
    else 
    # or you can use the authenticate_user! devise provides to only allow signed_in users 
    raise 'Please sign in!' 
    end 
end 
+0

ApplicationHelper 또는 아마도 "AuthenticationHelper"에 def check_if_admin을 추가하고 컨트롤러에 도우미를 포함시킬 수 있습니다 =) – Abdo

관련 문제