@aaltqna

Как прикрепить новосозданный эксель файл к записи?

Есть мейлер, в котором генерируется эксель файл и прикрепляется к рассылке, все как здесь:
https://github.com/caxlsx/caxlsx_rails#mailers
xlsx = render_to_string layout: false, template: "my_dir/export"
xlsx_base64 = Base64.encode64(xlsx)
attachment = {mime_type: Mime[:xlsx], content: xlsx_base64, encoding: 'base64'}
attachments["file.xlsx"] = attachment


Мне нужно, чтобы каждый отправленный файл сохранялся. Для этого я добавил новую модель с has_one_attached:
class MyLog < ApplicationRecord
  has_one_attached :xlsx_file
end


И в после создания файла хочу создать новую запись и этим прикрепленным файлом:
MyLog.create(
  # xlsx - это то, что я выше создал. Возможно нужен xlsx_base64 или attachment
  xlsx_file: xlsx
)


Проблема в том, что caxls создает файл и возвращает строку. Это по их инструкции для вложений рассылок нужно. Например, в документации по active_storage_attachment для получения файла используют file_field и с него приходит файл с классом ActionDispatch::Http::UploadedFile. Если его передавать в xlsx_file, то все нормально работает.

Но мне нужно не получать файл через этот таг, а взять новосозданный и его прикрепить. Как это вообще можно сделать?
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы