Скрепка только изображения процесса - PullRequest
11 голосов
/ 13 марта 2011

Я хотел бы использовать одно файловое поле для нескольких форматов.Насколько я понимаю, Paperclip был достаточно умен, чтобы только масштабировать изображения и оставлять другие форматы в покое, но, похоже, это не сработало для flv (что возвращает imagemagick / Identify-errors).Есть ли способ помочь Paperclip немного и явно настроить конкретные форматы для масштабирования?

ОБНОВЛЕНИЕ: Очевидно, эти ошибки предотвращаются с помощью: whiny => false (спасибо fl00r), который работаетхорошо для регулярных загрузок.Однако здесь я пытаюсь загрузить файл по FTP, а затем создать новую запись по коду с файлом File.new ([: path]) в параметре attachment.Это работает как брелок для изображений, но: whiny => ложный трюк больше не будет делать это.У кого-нибудь есть советы по этому поводу?

Ответы [ 2 ]

13 голосов
/ 13 марта 2011

установите для параметра :whiny значение false:

has_attached_file :my_attach, :whiny => false ...

это не поможет peparclip обрабатывать только изображения, но не выдаст ошибки, если обработка не удалась

UPD

Обработка только для изображений:

has_attached_file :file, 
  :styles => lambda{ |a| ["image/jpeg", "image/png"].include?( a.content_type ) ? { :small => "90x90#" } : {}  }

, где вы можете добавлять сколько угодно типов контента в ["image/jpeg", "image/png"] массив

3 голосов
/ 24 октября 2012

Вы также можете использовать обратный вызов paperclip для последующей обработки изображений и дать команду paperclip обрабатывать только изображения.Если обратный вызов before_post_process возвращает false, обработка останавливается.

    before_post_process :process_only_images

    def process_only_images
     %w(image/jpeg, image/png,image/gif,image/pjpeg, image/x-png).include?(attachment_content_type)
    end

Более подробную информацию можно найти в документации по скрепке на https://github.com/thoughtbot/paperclip#events

...