无法使用cancan访问自定义操作

时间:2013-12-26 10:08:50

标签: ruby-on-rails cancan

我有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.

1 个答案:

答案 0 :(得分:0)

你的能力文件看起来很好,除了“管理”意味着所有,所以你可以:进步,博客就像你的can:manage,Blog line

完全覆盖

授权!但是,在您的进度操作中调用不应该将current_user作为第二个参数,而是要检查访问权限的对象,例如@blog,或类似的东西

请查看https://github.com/ryanb/cancan/wiki/authorizing-controller-actions了解更多详情!