Rolify技能返回false

时间:2013-04-08 21:57:02

标签: ruby-on-rails rolify

我在使用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, :all
    else
      can :read, :all
    end

  end
end

控制台测试($ rails console

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**

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

2 个答案:

答案 0 :(得分:1)

问题是与canarddeclarative_authorization的宝石冲突。禁用这两个并重新启动rails服务器解决了这个问题。也许这将有助于其他人在尝试这些不同的宝石时走上同样的道路。

答案 1 :(得分:0)

CanCan依赖于current_user方法的存在,该方法将返回当前登录的用户。如果您使用例如设计进行身份验证,则此方法就在那里。如果您正在使用其他内容,则必须确保current_user方法存在。