Как указать Paperclip не сохранять исходный файл при загрузке? Или, что еще лучше, сохранить масштабированную версию файла как оригинал?
Как сказать скрепке не сохранять исходный файл?
Ответы (3)
Я считаю, что вы можете просто определить стиль для :original, чтобы скрепка заменила оригинал на этот размер.
:styles => { :original => '300x168>', :cropped_thumb => {:geometry => "115x70#", :jcrop => true}, ...}
Решение Cris G может быть хорошим в большинстве простых случаев, но оно имеет ограничения. учтите, что: style :original Paperclip обрабатывается в первую очередь, поэтому после этого обновленное :original изображение (теперь намного меньшее) будет источником для последующей обработки. Следовательно, вы вынуждены сохранять стиль :original с наилучшим разрешением. Ситуация усугубляется тем, что вам нужно обрезать изображения с процессором: это ситуация, когда вам действительно нужно настоящее оригинальное качество. )
Поэтому я бы порекомендовал вам несколько необработанное (необходимо выяснить, как получить все вложения модели) решение:
after_save :reprocess_attach
private
def reprocess_attach
if self.<atch_name>.present? && Pathname.new(self.<atch_name>.path).exist?
self.<atch_name>.save
File.unlink(self.<atch_name>.path)
end
end
ему все равно, какая обработка была за сценой. Он просто убивает исходный файл)
Скрепка всегда сохраняет оригинал по умолчанию, но я «полагаю», что если вы просто удалите его из своей миграции, он не будет пытаться сохранить его.
Я сохраняю масштабированный оригинал в своей модели, чтобы пользователи могли редактировать свое изображение позже. Моя модель выглядит так:
:styles => { :cropped_thumb => {:geometry => "115x70#", :jcrop => true}, :resized_thumb => {:geometry => "115x70>"}, :deal => {:geometry => "64x56#"},
:cropped_large => {:geometry => "#{PHOTO_IMAGE_WIDTH}x#{PHOTO_IMAGE_HEIGHT}#", :jcrop => true},
:resized_large => {:geometry => "#{PHOTO_IMAGE_WIDTH}x#{PHOTO_IMAGE_HEIGHT}>"},
:orig => '300x168>', #this is the scaled original that I call later
:cropped_orig => {:geometry => '300x168#', :jcrop => true},
:resized_orig => {:geometry => '300x168>'} },
:processors => [:jcropper]