我正在使用设计来帮助进行身份验证,出于各种原因,我有几个 User 模型的子类,它们有助于分离注册和其他一些业务逻辑的关注点。
User
are Affiliate
and的子类Admin
(将来我可能会有更多),所有这些子类都将所有数据存储在 User 表中(不是单独的表)。
所有用户都可以通过默认users
资源 ( /users/sign_in
) 登录。但是,这是我遇到问题的地方。
如果用户通过/users/sign_in
资源登录,我可以访问user_signed_in?
and current_user
helper,然后访问任何其他 Active Record 关联。这就是我要的!呜呼!这很好用。
但是,对于注册为Affiliate
. 由于设计会自动登录用户(我确实想要),我希望它user_signed_in?
等于true
并且current_user
是刚刚登录的用户。当用户通过/affiliate/sign_up
资源注册时,情况并非如此。
在Affiliate
模型上(请记住,它像这样子类化用户class Affiliate < User
)我已经(通过设计)为 sign_up 生成了一组单独的控制器/视图,因此我可以稍微自定义这个过程(因为 sign_up 过程对于这个特定类型更加自定义)用户)。当用户通过此资源/affiliate/sign_up
注册会员时,然后注册,但现在,current_user
是nil
和user_signed_in?
是false
。但是,助手current_affiliate
是一个水合物体,affiliate_signed_in?
是真实的。
我想要做的是能够访问一种类型的助手 -user_signed_in?
助手和current_user
助手而不是孩子affiliate_signed_in?
和current_affiliate
. 我想访问:current_user
并且user_signed_in
只有。看到Affiliate
子类,User
为什么不返回当前用户(又名:the )?为什么and助手可以工作,而-esque 则不行?user_signed_in?
current_user
Affiliate
current_affiliate
affiliate_signed_in?
user
有没有办法让框架总是使用current_user
和user_signed_in?
帮助,因为一切都是User
模型的子类?