Я использую Shrine в приложении Ruby on Rails для создания процесса изменения размера и загрузки изображений в хранилище.
Мой текущий код:
image_uploader.rb
require "image_processing/mini_magick"
class ImageUploader < Shrine
plugin :derivatives
Attacher.derivatives_processor do |original|
magick = ImageProcessing::MiniMagick.source(original)
{
resized: magick.resize_to_limit!(120, 120)
}
end
end
user.rb
class User < ApplicationRecord
include ImageUploader::Attachment(:image)
before_save :image_resize
def image_resize
self.image_derivatives!
end
end
Я реализовал это при чтении официальной документации, но это нежелательно по двум причинам.
- Требуется триггер в коде модели. Можно ли его дополнить только
image_uploader.rb
? - Для доступа к изображениям, созданным с помощью этого кода, требуется префикс «измененного размера» (например,
@user.image(:resized).url
), и исходное изображение также останется в хранилище. Я хочу обработать исходное изображение.
Есть ли способ загрузки при решении этих двух проблем?