我有Blog Controller和Model,我希望能够访问自定义动作,我的能力模型是这样的:
user ||= User.new # guest user (not logged in)
if user.has_role? :admin
can :manage, :all
elsif user.has_role? :creator
can :progress, Blog
can :read, :all
can :manage, Blog
else
can :read, :all
end
在我的进度操作中,我正在授权像这样的用户
authorize! :progress, current_user
但它总是给我授权用户错误。
You are not authorized to access this page.
答案 0 :(得分:0)
你的能力文件看起来很好,除了“管理”意味着所有,所以你可以:进步,博客就像你的can:manage,Blog line
完全覆盖授权!但是,在您的进度操作中调用不应该将current_user作为第二个参数,而是要检查访问权限的对象,例如@blog,或类似的东西
请查看https://github.com/ryanb/cancan/wiki/authorizing-controller-actions了解更多详情!