Я создаю файл PDF для накладной в фоновом задании и хочу прикрепить его к накладной. Я использую Carrierwave для загрузки файлов, но здесь я не загружаю его из пользовательского интерфейса. Я хотел бы иметь возможность прикрепить файл, не сохраняя его на диске.
invoice.rb
mount_uploader :file, InvoiceFileUploader
фоновая работа
class GeneratePdfJob < ApplicationJob
queue_as :default
def perform(invoice)
pdf = InvoiceServices::PdfGenerator.new(invoice)
file_name = [invoice.number.gsub('/','-'), invoice.due_date.to_s, SecureRandom.urlsafe_base64].join('-') + '.pdf'
pdf.render_file(file_name)
file = File.new(file_name)
invoice.file = file
File.delete(file_name)
end
end
Итак, сейчас я вызываю метод render_file
, чтобы фактически создать файл, но этот файл сохраняется в корневой папке моего приложения, поэтому мне нужно впоследствии удалить его. Есть ли способ лучше? Есть ли способ прикрепить файл, не сохраняя его на диске?