Доступ к необработанным байтам обработанного ActiveStorage :: Variant - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь включить вариант файла, хранящегося в Active Storage , как встроенное вложение для почтовой программы.Почтовая сторона вещей не важна;Я пытаюсь прочитать байты загруженного изображения.

Чтобы включить исходный загруженный файл, это работает:

# The model
class Newsletter < ApplicationRecord
  has_one_attached :header
end

# The mailer
class NewsletterMailer < ApplicationMailer
  def mailshot
    @newsletter = params[:newsletter]
    if @newsletter.header.attached?
      attachments.inline['header'] = @newsletter.header.download
    end
  end
end

# In the view (MJML HAML, but you get the idea...)
- if attachments['header'].present?
  %mj-image{src: attachments['header'].url}

Но что если вместо включая исходный файл, я хочу включить его измененный вариант?

attachments.inline['header'] =
  @newsletter
    .header
    .variant(resize: '100x100')
    .processed
    .???

Как получить доступ к необработанным байтам обработанного изображения?

Конечно, я все еще могу .downloadоригинал и делаю свою собственную обработку, но скорее надеюсь, что может быть более легкий путь.Спасибо!

1 Ответ

0 голосов
/ 29 декабря 2018

Отвечая на мой собственный вопрос, и читая код немного больше , я могу сделать это так:

if @newsletter.header.attached?
  processed = @newsletter.header.variant(resize: '100x100').processed
  attachments.inline['header'] = processed.service.download processed.key
end

Такое чувство, что должен быть более элегантный способ?

...