我有一个用户模型,它有一个关联的密钥持有者和来宾。为了使我的代码更加干燥,我希望它让 current_user 引用: a) 如果用户已登录,它将是正常的 Devise current_user 对象。b) 如果密钥持有者已登录,它将是该密钥持有者的用户 - 即 current_keyholder.user c) 如果访客已登录,它将是该访客的用户。
我已经尝试将助手添加到应用程序控制器中,但是,这些不起作用,因为在我的代码运行之前没有初始化例如 current_user。
基本上我想要实现的是:
def current_user
if user_signed_in?
@current_user ||= warden.authenticate(:scope => :user)
elsif keyholder_signed_in?
@current_user = current_keyholder.user
elsif guest_signed_in?
@current_user = current_guest.user
end
end
上面的代码给了我一个“堆栈级别太深”的错误,但希望能显示我正在尝试的工作。如果有人可以提供帮助,那就太好了,谢谢!