Ruby on rails Rolify能力返回false

Ruby on rails Rolify能力返回false,ruby-on-rails,rolify,Ruby On Rails,Rolify,我在使用Rails时遇到了一个奇怪的问题(单击下面的教程):can方法似乎不起作用,因此导致用户权限无法使用。下面是我的ability.rb文件和控制台输出,其中演示了问题 class Ability include CanCan::Ability def initialize(user) user ||= User.new # guest user (not logged in) if user.has_role? :admin can :manage

我在使用Rails时遇到了一个奇怪的问题(单击下面的教程):
can
方法似乎不起作用,因此导致用户权限无法使用。下面是我的
ability.rb
文件和控制台输出,其中演示了问题

class Ability
  include CanCan::Ability

  def initialize(user)

    user ||= User.new # guest user (not logged in)

    if user.has_role? :admin
      can :manage, :all
    else
      can :read, :all
    end

  end
end
控制台测试(
$rails控制台


我还检查了数据库,所有关系都设置正确。我正在运行rails 3.2.13。

问题是与
canard
声明性授权冲突。禁用和重新启动rails服务器解决了这个问题。也许这将有助于其他走上相同道路的人尝试这些不同的宝石。

CanCan依赖于
当前用户
方法的存在,该方法将返回当前登录的用户。例如,如果您使用Desive进行身份验证,则可以使用此方法。如果您正在使用其他方法,那么您必须确保
当前用户
方法存在。

您是否尝试过在测试
能力时传递实际模型或模型类而不是
:all
。可以吗?
user = User.find(2)
user.add_role "admin"
user.has_role? :admin
=> **true**

ability = Ability.new(user)
ability.can? :manage, :all
=> **false**
ability.can? :read, :all
=> **false**