2012-10-22 5 views
2

사용자 유형에 따라 authentication_keys 구성을 조건부로 만들 수있는 방법이 있습니까?레일스 조건부 인증 키

예를 들어 내 사용자 모델에는 비트 마스크 속성의 값으로 정의 된 두 명의 사용자, 표준 사용자 및 학생이 있습니다. 나는 username과 school_id를 기반으로 학생을 인증하고 싶습니다. 표준 사용자는 school_id 값을 가질 필요가 없습니다. 이를 위해 저는 학생과 일반 사용자를위한 두 종류의 로그인 화면이 있습니다. 학생 로그인 화면에는 학교에 인증 된 숨겨진 school_id 필드가 있습니다. 내 유증 구성 파일에서

나는이 :

config.authentication_keys = [ :username, :school_id ] 

그러나 표준 사용자가 로그인 할 수없는이 설정으로, 내 생각 엔 모든 사용자가 인증되고있는 것이이 school_id을 기대하는 점이다. 인증 키를 조건부로 만들 수 있습니까? 또는 school_id에 allow_blank 옵션을 지정 하시겠습니까? 표준 사용자와 학생을 같은 모델로 유지할 수 있기를 원합니다.

답변

2

예, 단순히 모델에서 수행

class User < ActiveRecord::Base 
    devise :database_authenticatable, authentication_keys: [:username] 
end 

class Student < ActiveRecord::Base 
    devise :database_authenticatable, authentication_keys: [:username, :student_id] 
end 
+0

호세 야 - 그것은 그들에게 다른 모델 모두 내부에 배치하는 것이 필요하다? 현재이 둘은 사용자로 간주되며 cancan 인증을 통해 구별됩니다. – Noz

+0

예, 다른 모델이어야합니다. –

+0

내가 devise 3.2.2를 사용하고 있지만 답변이 나를 위해 작동하지 않는다 :-( 내 앱에 : 클래스 AdminUser [: email] end – MarkP

관련 문제