使用: 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