2012-04-04 3 views
0

나는 내 인증을 돕기 위해 devise를 사용하고 있는데, 여러 가지 이유 때문에 등록 및 다른 비즈니스 로직에 대한 우려를 분리하는 데 도움이되는 User 모델의 몇 가지 하위 클래스가 있습니다. 사용자 테이블 (안 별도의 테이블)에 모든 데이터를 저장, 모두 UserDevute User Inheritance 및 user_signed_in? and current_user

서브 클래스는 AffiliateAdmin이다 (그리고 나는 미래에 더있을 수 있습니다).

모든 사용자는 기본 users 자원 (/users/sign_in)을 통해 로그인 할 수 있습니다. 그러나 이것이 내가 문제가되는 곳입니다.

사용자가 /users/sign_in 리소스를 통해 로그인하면 user_signed_in?current_user 헬퍼에 액세스 한 다음 다른 활성 레코드 연결에 액세스 할 수 있습니다. 이것이 내가 원하는거야! 우 후! 이것은 잘 작동합니다.

그러나 Affiliate으로 가입하는 사용자는 마찬가지입니다. 수배자가 사용자를 자동으로 기록하기 때문에 (내가 원하는) user_signed_in?truecurrent_user이 방금 로그인 한 사용자가 될 것으로 예상합니다. 사용자가 /affiliate/sign_up 리소스를 통해 가입하는 경우에는 해당되지 않습니다.

Affiliate 모델에서

sign_up 프로세스 비트이기 때문에 I는 (고안을 통해) 생성 한 제어기의 개별 세트/sign_up위한 도면 이렇게 I는 (비트 이러한 프로세스를 사용자 정의 가능 (기억, 이러한 class Affiliate < User 같은 사용자가 서브 클래스) 이 특정 유형의 사용자에 맞게 더 맞춤화되었습니다.) 사용자가이 리소스 /affiliate/sign_up을 통해 가입하면 제휴사가 등록되지만 current_usernil이고 user_signed_in?false입니다. 그러나 도우미 current_affiliate은 수화 개체이며 affiliate_signed_in?이 true입니다. user_signed_in? 도우미와 current_user 도우미없는 아이 affiliate_signed_in?current_affiliate - 내가 원하는 무엇

는 도우미의 한 종류에 액세스 할 수 있습니다. 액세스하려는 : current_useruser_signed_in 전용. Affiliate 하위 클래스가 User 인 것을보고, user_signed_in?current_user이 현재 사용자 (별칭 : Affiliate)를 반환하지 않는 이유는 무엇입니까? current_affiliateaffiliate_signed_in? 도우미가 작동하는 이유는 무엇입니까? user은 좋지 않습니다.

모든 것이 User 모델을 서브 클래 싱하기 때문에 프레임 워크에 항상 current_useruser_signed_in? 도우미를 사용하는 방법이 있습니까?

답변

0

설정 방법에 따라 사용자와 제휴사로 동시에 로그인 할 수있는 것 같습니다. 즉, 주어진 순간에 current_user 및 current_affiliate가있을 수 있습니다. 항상 current_user가되도록하려면 Devise 도우미를 무시할 수 있습니다. 그러나 한 세션을 통해 로그인 한 사용자 또는 제휴사 만 로그인 할 수 있도록해야합니다. Else Devise는 current_user에 대해 반환 할 객체를 알 수있는 방법이 없습니다.

관련 문제