如何在Rails应用程序中使current_user始终不是nil?

时间:2011-03-03 14:37:19

标签: ruby-on-rails devise null cancan

请告诉我一个小问题:在我的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,但我不知道如何以正确的方式创建这个全局事物。

感谢您的回答!

2 个答案:

答案 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或观看屏幕投射: