Смешанные типы файлов с CarrierWave - PullRequest
9 голосов
/ 03 февраля 2012

У меня есть загрузчик CarrierWave, который принимает файлы разных типов. Некоторые из них являются типами изображений (например, jpg, png), а другие нет.

Я хотел бы создать среднюю версию загруженного файла с

version :medium do
  process :resize_to_fit => [300, 300]
end

Поскольку это работает только для файлов изображений, как я могу различить изображения и другие типы и пропустить изменение размера для файлов, не относящихся к изображениям?

В настоящий момент CarrierWave пытается обработать файл независимо от его типа, что приводит к ошибке обработки MiniMagick, если файл не является изображением.

1 Ответ

14 голосов
/ 04 февраля 2012

Согласно Carrierwave Docs вы можете выполнить условную обработку:

version :medium, :if => :image? do
  process :resize_to_fit => [300, 300]
end

protected

def image?(new_file)
  new_file.content_type.include? 'image'
end

На самом деле более полный ответ я нашел здесь

...