请告诉我一个小问题:在我的Rails 3应用程序中,我需要 current_user 始终不是。我正在使用Devise和CanCan作为auth系统,我正在思考如何实现“ guest ”用户。对于像“admin”这样的角色,它运行正常(如果current_user.is?:admin ),但如果用户未登录,我希望不检查 user_signed_in?,但是同样的方式( if current_user.is?:guest )例如。
我想我需要在Application_Controller上创建current_user对象ib before_filters,但我不知道如何以正确的方式创建这个全局事物。
感谢您的回答!
答案 0 :(得分:2)
你可以这样试试:
if current_user.try(:is?, :admin)
因此,如果current_user为nil
答案 1 :(得分:1)
如果您正在使用'CanCan',您应该将您提到的功能添加到您的能力类中。例如:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
can :manage, :all if user.is? :admin
can :read, :all if user.is? :guest
end
end
有关更多信息,请浏览Wiki或观看屏幕投射: