Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.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 在Rails方法内的特定点跳过授权_Ruby On Rails_Pundit - Fatal编程技术网

Ruby on rails 在Rails方法内的特定点跳过授权

Ruby on rails 在Rails方法内的特定点跳过授权,ruby-on-rails,pundit,Ruby On Rails,Pundit,我有一个if-else声明,其中我检查了某些公司是否已经被选中。如果列表为空,我希望传递@companys=“empty”,以便使用它呈现不同的视图。然而,权威人士要求获得一家公司 有没有办法在方法中的特定点跳过授权?在这种情况下,请在注释#跳过authorize@companys here? policy_scope(Company) if params[:query].present? if (Company.search_by_name_and_category(p

我有一个if-else声明,其中我检查了某些公司是否已经被选中。如果列表为空,我希望传递@companys=“empty”,以便使用它呈现不同的视图。然而,权威人士要求获得一家公司

有没有办法在方法中的特定点跳过授权?在这种情况下,请在注释
#跳过authorize@companys here?

  policy_scope(Company)
    if params[:query].present?
      if (Company.search_by_name_and_category(params[:query].capitalize) - @selected_companies).empty?
        @companies = "Empty"
        # Skip authorize @companies here
      else
        @companies = (Company.search_by_name_and_category(params[:query].capitalize) - @selected_companies)
        @companies.each {|company| authorize company }
      end

    else
      @companies = Company.all - @selected_companies
      @companies.each {|company| authorize company }
    end

除了有条件地跳过授权之外,我还会对代码进行以下更改,以减少查询和代码行:

policy_scope(Company)

@companies = params[:query].present? ?
               Company.search_by_name_and_category(params[:query].capitalize) :
               Company.all
@companies -= @selected_companies

if @companies.blank?
  skip_authorization
else
  @companies.each { |company| authorize company }
end

除了有条件地跳过授权之外,我还会对代码进行以下更改,以减少查询和代码行:

policy_scope(Company)

@companies = params[:query].present? ?
               Company.search_by_name_and_category(params[:query].capitalize) :
               Company.all
@companies -= @selected_companies

if @companies.blank?
  skip_authorization
else
  @companies.each { |company| authorize company }
end

我建议您设置
@companys=[]
,这样您就可以始终依靠视图中的数组。在视图中,我会检查
是否@companys.empty?
以查看其中是否有任何内容。我在if条件的第一个分支中没有看到授权步骤是如果我取消对authorize@companys的注释,我会得到以下结果:Pundit::AuthorizationNotPerformedError-userselectioncontroller:我认为有一个
跳过\u authorization
帮助程序,请参见是,就是这样!!!!非常感谢。我建议您设置
@companys=[]
,这样您就可以始终依靠视图中的数组。在视图中,我会检查
是否@companys.empty?
以查看其中是否有任何内容。我在if条件的第一个分支中没有看到授权步骤是如果我取消对authorize@companys的注释,我会得到以下结果:Pundit::AuthorizationNotPerformedError-userselectioncontroller:我认为有一个
跳过\u authorization
帮助程序,请参见是,就是这样!!!!非常感谢。