Пропустить авторизацию в определенной точке внутри метода Rails - PullRequest
0 голосов
/ 03 мая 2018

У меня есть оператор if else, в котором я проверяю, были ли ранее выбраны определенные компании. Если список пуст, я хочу передать @companies = "Empty", чтобы я мог использовать его для отображения другого представления. Пандит, однако, требует предоставления компании.

Есть ли способ пропустить авторизацию в определенной точке метода? В этом случае пропустите это в комментарии #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

1 Ответ

0 голосов
/ 03 мая 2018

Помимо условного пропуска авторизации, я бы сделал следующие изменения в коде, чтобы уменьшить количество запросов и строк кода:

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