2012-12-29 3 views
0

workers_table 및 admins_table의 두 테이블이 있습니다.사용자가 속한 테이블로 리디렉션

컨트롤러가 두 개 있는데 devise (sign_in, sign_up ...)을 사용합니다.

내가 사용

before_filter :authenticate_user! 

을 노동자와 관리자의 컨트롤러에. @ 이메일이 발견되는 경우

@email = current_user.email 

내가 확인하려면 :

내가 로그인 사용자의 이메일을 가정

가 노동자 테이블에서 발견, 그래서를 리디렉션의 경우
  • 관리자의 index.html.erb에 입력 할 수 없습니다.

  • 이 admins 테이블에있는 경우 admins의 index.html.erb로 리디렉션합니다 (직원의 index.html.erb에는 입력 할 수 없습니다).

사용자가 workers_table 또는 admins_table에 속하는지 확인하는 방법을 알고 있습니다.

하지만 사용자가 속한 테이블을 어디에서 확인해야합니까? 다른 컨트롤러를 정의해야합니까?

안내해주세요.

답변

1

application_controller.rb은 당신이 당신의 admins_controller에 대한 ensure_admin 방법이 할 수있는 최소한 그것을

이있는 경우 sessions_controller.rb 될 수 authenticate_user 기능을

다른 장소를 정의 할 수있는 좋은 장소가 될 것입니다 before_filter에 추가하고, 그들이 admine하지 않은 경우, 당신은 내가 레일에 새로 온 사람, 그래서 나는이 작업을 수행 할 수있는 기존의 방법에 관해서는 확실 해요,하지만 위의 노동자들에게

을 # 인덱스를 redirect_to 수 내가 어떻게 그것을 할 수 있습니다.

+0

ensure_admin 메소드를 어디에 써야할까요? application_controller.rb에? 나는 7 가지 방법을 제외하고는 다른 방법을 만들 수 없다고 생각했다 : 생성, 색인, 파괴, 보여주기, 편집, 업데이트 및 새로운 ... (나는 레일에 너무 익숙하다.) 고맙습니다. –

+0

http://railscasts.com/episodes/250-authentication-from-scratch는 인증을위한 훌륭한 리소스이며 컨트롤러에서 원하는 모든 방법을 사용할 수 있습니다 (먼저 모델에 넣는 것을 고려해야하지만). –

관련 문제