Мне нужно поднять исключение, если отчет приходит пустой или с нулевыми данными - PullRequest
0 голосов
/ 06 января 2020

Я пытался поднять ставку, но, поскольку я новичок в ruby на рельсах, я так растерялся, что делать исключение, если отчет пуст. Ниже приведен код услуги:

class ReportService
  def self.generate_report(params, type, data_type = 'data')
    "#{type}Report".constantize.send("report_#{data_type}", params)
  end

  def Not_Blank
    raise Exception.new('Deu ruim!') unless @data_type.blank?
  end
end

Контроллер выглядел так:

class Backend::ReportUsersController < Backend::Controller
  respond_to :html, :xlsx, :pdf
  load_and_authorize_resource :user, :parent => false
  before_action :check_permissions

  def report
    if params[:user_report][:institutes].reject!(&:blank?).blank?
      return redirect_to(
        report_users_path,
        alert: I18n.t('report.user.error.institute_required')
      )
    end

    if params[:user_report][:start_at].blank?
      params[:user_report][:start_at] = I18n.l(User.first.created_at.to_date, format: :default)
    end

    if params[:user_report][:end_at].blank?
      params[:user_report][:end_at] = I18n.l(Date.current, format: :default)
    end

    params[:user_report][:current_user] = current_user.name
    if params [:user_report][:total_participants].blank?
      return redirect_to(
        report_users_path,
        alert: I18n.t('report.user.error.cannot_generate_blank_or_empty_report')
      )
    end
    @report = ReportService.generate_report(params[:user_report], 'User')
    @pagy, @report_data = pagy_array(JSON[@report[:data]], size: [2,2,2,2])

  end

  def generate_file
    if params[:format] == 'pdf'
      institutes = Institute.where(id: params[:report][:institute_ids])

      if institutes.size == 1
        @logo = institutes[0].logo
      end

      respond_to do |format|
        format.pdf do
          render pdf: I18n.t('activerecord.models.user.other'),
          margin: { top: 30 },
          footer: {
            font_size: 10,
            left: "#{I18n.t('report.research.general_labels.generated_at')}: " +
              "#{I18n.l(DateTime.current, format: :default_without_seconds)} | " +
              "#{I18n.t('report.research.general_labels.by')}: " +
              "#{@current_user.name}",
            right: "[page] #{I18n.t('report.research.general_labels.of')} [topage]"
          },
          orientation: 'Landscape',
          template: "backend/report_users/layout_pdf.html.erb"
        end
      end
    elsif params[:format] == 'xlsx'
      report = ReportService.generate_report(params, 'User', 'excel')

      respond_to do |format|
        format.xlsx { render xlsx: report[:file], filename: I18n.t('report.user.file_name.report_users') }
      end
    end
  end

  private

  def check_permissions
    raise CanCan::AccessDenied unless @current_user.full_manager?
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...