2012-04-04 96 views
0

我正在使用設計來幫助我的身份驗證和各種原因我有幾個用戶模型的子類,有助於分開關注註冊和一些其他業務邏輯。設計用戶繼承和user_signed_in?和current_user

User的子類是AffiliateAdmin(和我可能會在未來更多),所有這些的所有數據存儲在用戶表(未單獨的表)。

所有用戶都可以通過默認的users資源(/users/sign_in)登錄。但是,這是我遇到問題的地方。

如果用戶跡象通過/users/sign_in資源我可以訪問user_signed_in?current_user助手,然後訪問任何其他活動記錄的關聯。這就是我要的!嗚呼!這很好。

但是,註冊爲Affiliate的用戶也是如此。由於設計自動登錄用戶(我希望),我希望user_signed_in?等於truecurrent_user是剛剛登錄的用戶。當用戶通過/affiliate/sign_up資源註冊時,情況並非如此。

Affiliate模型(記住,它的子類用戶像這樣class Affiliate < User)我已經產生(通過色器件)的一組單獨的控制器的/觀看次數sign_up所以我可以有點自主的修改處理(作爲sign_up過程有點更爲這種特定類型的用戶定製)。當用戶通過此資源/affiliate/sign_up註冊時,會員隨後註冊,但是現在,current_userniluser_signed_in?false。但是,助手current_affiliate是水合物,affiliate_signed_in?屬實。

我想要做的是能夠訪問一個類型的幫手 - 在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 - 不是?

有沒有辦法讓框架始終使用current_useruser_signed_in?助手,因爲一切都是User模型的子類?

回答

0

您設置它的方式似乎可以同時以用戶和聯屬機構的身份登錄。這意味着,在某個特定時刻,可能會有current_user和current_affiliate。如果你希望它一直是current_user,你可以重寫Devise helpers。但是你必須確保只有一個用戶或一個會員通過一個會話登錄。否則Devise無法知道哪個對象返回current_user。