나는 Workers와 Admins의 두 종류의 사용자가 있습니다. 저는 근로자 테이블과 관리자 테이블을 가지고 있습니다. 응용 프로그램 페이지에 입장하기 전에 사용자가 로그인하도록하고 싶습니다. ,라고 나는 함수를 쓴, 지금사용자를 페이지로 리디렉션하고 다른 사용자를 다른 페이지로 리디렉션
`before_filter :authenticate_user!`
: 사용자가 근로자 테이블에서 발견되어 있는지 확인 is_worker
을 그래서 내와 ApplicationController אם 다음 줄을 추가했다. 그렇다면 그를 근로자의 페이지로 리디렉션하십시오. 사용자가 없으면 관리자 페이지로 리디렉션하십시오.
관리자가 관리자 페이지를 입력 할 수 없기 때문에 관리자가 작업자 페이지를 입력 할 수 없기를 바랍니다.
그래서 내가 추가해야한다고 생각합니다 : before_filter :is_worker
to : workerscontroller
및 adminscontroller
.
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :authenticate_user!
def is_worker
@email = current_user.email
tag = Worker.where(:email => @email)
if tag.nil?
redirect_to '/admins'
else
redirect_to '/workers'
end
end
end
만약 내가 잘못 나 수정하시기 바랍니다.
사용자 및 근로자/관리자는 어떻게 관련이 있습니까? 'User' 클래스 (테이블)와 두개의'Worker' /'Admin' 클래스/테이블을 가지고 있습니까? 아니면 '유형'또는 '역할'을 가진 하나의 클래스입니까? 만약 devise를 사용한다면, 별도의 테이블에 있다면'authenticate_worker'와'authenticate_admin'을 할 수 있습니다. – nathanvda
@nathanvda, 저는 'devise'를 사용하고 있습니다. 나는 노동자 테이블에 서명하는 각 사용자를 삽입한다. 나는이 테이블에 내 이메일을 추가 한 관리자 목록을 가지고있다. 나는 노동자를 (노동자 테이블에서 관리자 테이블로 이동시킴으로써) 매니저로 만들 수 있습니다. 하지만, 내가 할 수있는 말 : "authenticate_admin",하지만 관리자로 사용자를 정의해야합니다. 사용자를 관리자로 정의하려면 어떻게해야합니까? 그리고 사용자를 작업자로 정의하는 방법 (authenticate_admin 및 authenticate_worker 사용) –