Ruby on rails Rolify能力返回false
我在使用Rails时遇到了一个奇怪的问题(单击下面的教程):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
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**