在 Rails 方法中的特定点跳过授权
Skip authorize at a specific point inside a Rails method
我有一个 if else 语句,我在其中检查之前是否选择了某些公司。如果列表为空,我想传递 @companies = "Empty" 以便我可以使用它来呈现不同的视图。但是,Pundit 需要提供一家公司。
有没有办法跳过方法中特定点的授权?在这种情况下,在评论 #Skip authorize @companies 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
我有一个 if else 语句,我在其中检查之前是否选择了某些公司。如果列表为空,我想传递 @companies = "Empty" 以便我可以使用它来呈现不同的视图。但是,Pundit 需要提供一家公司。
有没有办法跳过方法中特定点的授权?在这种情况下,在评论 #Skip authorize @companies 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