0

请给我关于一个小问题的任何想法:在我的 Rails 3 应用程序中,我需要current_user始终不是 nil。我正在将 Devise 和 CanCan 用于身份验证系统,并且正在考虑如何实现“来宾”用户。对于像“admin”这样的角色,它可以正常工作(如果 current_user.is? :admin),但如果用户没有登录,我希望检查 not user_signed_in?,但同样的方式(如果 current_user.is? :guest)例如。

我想我需要在 Application_Controller 的 before_filters 之前创建 current_user 对象 ib,但我不知道如何以正确的方式创建这个全局对象。

感谢您的任何回答!

4

2 回答 2

2

你可以这样尝试:

if current_user.try(:is?, :admin)

所以不管 current_user 是nil

于 2011-03-03T14:49:25.383 回答
1

如果您使用的是“CanCan”,您应该在 Abilities 类中添加您提到的功能。例如:

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 或观看屏幕截图:

于 2011-03-03T14:50:27.380 回答