2

使用: Rails 4.2、Prawn、Paperclip、ActiveJobs 経由の DelayedJobs、Heroku。

非常にサイズが大きく、バックグラウンドで処理する必要がある PDF があります。カスタムジョブ内で作成し、S3 にアップロードして、準備ができたら URL をユーザーにメールで送信します。PdfUpload モデルを介してこれを容易にします。

私のアプローチ/コードに問題はありますか? 私が見つけた例で概説されているように File.open() を使用していますが、これが私のエラーの原因のようです( TypeError: FlightWithGradesReport から String への暗黙的な変換はありません)。

  class PdfUpload < ActiveRecord::Base
    has_attached_file :report,
      path: "schools/:school/pdf_reports/:id_:style.:extension"
  end

/pages_controller.rb

  def flights_with_grades_report
    flash[:success] = "The report you requested is being generated.  An email will be sent to '#{ current_user.email }' when it is ready."
    GenerateFlightsWithGradesReportJob.perform_later(current_user.id, @rating.id)
    redirect_to :back
    authorize @rating, :reports?
  end

/ 仕事

class GenerateFlightsWithGradesReportJob < ActiveJob::Base
  queue_as :generate_pdf

  def perform(recipient_user_id, rating_id)
    rating = Rating.find(rating_id)
    pdf = FlightsWithGradesReport.new( rating.id )
    pdf_upload = PdfUpload.new
    pdf_upload.report = File.open( pdf )
    pdf_upload.report_processing = true
    pdf_upload.report_file_name = "report.pdf"
    pdf_upload.report_content_type = "application/pdf"
    pdf_upload.save!
    PdfMailer.pdf_ready(recipient_user_id, pdf_upload.id)
  end
end

これにより、エラーが発生します。

 TypeError: no implicit conversion of FlightsWithGradesReport into String
4

1 に答える 1