0

我在使用带有 Rails 的Rolify(点击查看我正在关注的教程)时遇到了一个奇怪的问题:该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。

4

2 回答 2

1

canard问题是与or的 gem 冲突declarative_authorization。禁用两者并重新启动 rails 服务器解决了这个问题。也许这会帮助那些在尝试这些不同的宝石时走同样道路的其他人。

于 2013-04-08T22:03:27.493 回答
0

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

于 2013-04-08T22:04:00.483 回答