cancan - "can :manage, all"。我无法在使用Devise的Rails 3应用程序中访问“all”。

5
我在应用程序控制器中使用“检查授权”,使每个操作都需要权限。我开始时会给自己(超级管理员:=])管理所有权限。我认为管理所有将允许我访问整个应用程序而无需命名资源。
用户模型:
  def role?(role)
    roles.include? role.to_s
  end

应用控制器:


check_authorization

cancan的权限模型:

  def initialize(user)
    if user.role? :superadmin
      can :manage, :all
    end
  end

错误信息:

This action failed the check_authorization because it does not authorize_resource. Add skip_authorization_check to bypass this check.

感谢您的选择。

将以下代码添加到控制器的类级别上下文中:load_and_authorize_resource - Daniel Viglione
1个回答

4
据我所知,您需要在控制器中调用authorize_resource作为一个before过滤器才能使其工作。

我曾认为将“check_authorization”放置在应用控制器中可以避免这种需要...但我会尝试一下。谢谢。 - Jay
@Jay:all 意味着你控制器中的每个操作... https://github.com/ryanb/cancan/wiki/defining-abilities - Hosemeyer
@Hosemeyer,感谢您的参考。我可能错了,但是按照我的理解,它似乎意味着每个控制器中的每个操作。 - Jay
@Jay,它确实可以,你在每个控制器中都使用了“load_and_authorize_resource”吗? - Hosemeyer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接