我在使用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。
答案 0 :(得分:1)
问题是与canard
或declarative_authorization
的宝石冲突。禁用这两个并重新启动rails服务器解决了这个问题。也许这将有助于其他人在尝试这些不同的宝石时走上同样的道路。
答案 1 :(得分:0)
CanCan依赖于current_user
方法的存在,该方法将返回当前登录的用户。如果您使用例如设计进行身份验证,则此方法就在那里。如果您正在使用其他内容,则必须确保current_user
方法存在。