Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 可通过数据库和加载资源访问能力_Ruby On Rails_Cancan - Fatal编程技术网

Ruby on rails 可通过数据库和加载资源访问能力

Ruby on rails 可通过数据库和加载资源访问能力,ruby-on-rails,cancan,Ruby On Rails,Cancan,我的权限在数据库中定义,如中所述。我只想为我的权限表中的id授权:索引,但如果未授权任何资源,则仍会显示索引页 如果我使用load\u和\u authorize\u resource,它将根据权限加载资源。如果没有,则无法访问索引操作。我对资源的访问被拒绝 如果我仍然希望在未授权资源的情况下允许访问:index操作,我会看到两个选项: 选项1(讨厌它) :手动加载索引的资源 class FirmsController < ApplicationController load_and_a

我的权限在数据库中定义,如中所述。我只想为我的权限表中的id授权
:索引
,但如果未授权任何资源,则仍会显示索引页

如果我使用
load\u和\u authorize\u resource
,它将根据权限加载资源。如果没有,则无法访问
索引
操作。我对资源的访问被拒绝

如果我仍然希望在未授权资源的情况下允许访问
:index
操作,我会看到两个选项:

选项1(讨厌它) :手动加载索引的资源

class FirmsController < ApplicationController
  load_and_authorize_resource :except => :index

  def index
    @firms = user.permissions.where{action: ["index", "manage", "read"], subject_class: "Firm"}
  end
end
选项3?

您能想到一种更清洁的解决方案吗?

如中所述,您应该使用助手方法:

  skip_authorize_resource :only => :index
如中所述,您应该使用助手方法:

  skip_authorize_resource :only => :index

嗨,马克,我测试了它,它工作正常(谢谢!)。虽然我对它的实际作用有点困惑。我还必须添加一个
跳过授权检查:only=>:index
。这是否意味着我的资源根本没有授权?为什么索引没有显示所有的资源(即使是我没有授权的资源)?load\u资源部分是否足够智能,可以不加载任何内容?@kalema,
load\u和\u authorize\u资源
只是加载资源(或集合),然后运行授权。因此,如果您直接设置授权跳过,则只执行加载。您好,马克,我测试了它,它工作正常(谢谢!)。虽然我对它的实际作用有点困惑。我还必须添加一个
跳过授权检查:only=>:index
。这是否意味着我的资源根本没有授权?为什么索引没有显示所有的资源(即使是我没有授权的资源)?load\u资源部分是否足够智能,可以不加载任何内容?@kalema,
load\u和\u authorize\u资源
只是加载资源(或集合),然后运行授权。因此,如果您直接设置授权跳过,则只执行加载。看见