我遇到了康康的一些问题,我不知道自己做错了什么。
在我的/ rails_admin.rb
中config.authorize_with :cancan
在我的models / ability.rb
中class Ability
include CanCan::Ability
def initialize(user)
# Define abilities for the passed in user here. For example:
user ||= User.new # guest user (not logged in)
if user.admin?
can :manage, :all
else
can :read, :all
end
end
我有管理员吗?提供真值或假值并对其进行测试的方法。
问题是我的Ability类没有用户初始化。如果我将binding.pry放在def initialize(用户)下,我得到nil win,我就叫用户。我错过了什么?
答案 0 :(得分:0)
你在哪里打电话授权! “current_user”字段/方法是否存在或是否也存在?
CanCan希望您定义'current_user'方法。
许多用于身份验证的流行宝石,例如Devise,都会自动为您提供此功能。
如果您编写了自己的登录脚本,则需要提供一个名为“current_user”的帮助器或控制器方法,该方法返回当前登录的用户。
编辑:参考有关CanCan期望的更多细节