Как отключить постобработку для файлов PDF в Скрепке?

Скрепка попыткой по умолчанию обработать каждый файл изображения для генерации миниатюры. Но это также пытается сделать это с файлами PDF, которые могут быть действительно трудоемкой задачей. Я попытался считать Google и нашел одно решение, но это изменяет методы Скрепки.

Как отключить постобработку PDF в Скрепке, не изменяя источники Скрепки?

8
задан klew 17 February 2010 в 17:50
поделиться

2 ответа

Из моего текущего производственного приложения аналогично приведенному выше, но явно ищет изображения (в этом случае мой загрузчик почти принимает файлы любого типа, поэтому я обрабатываю только изображения и игнорировать все остальные):

before_post_process :is_image?

def is_image?
  ["image/jpeg", "image/pjpeg", "image/png", "image/x-png", "image/gif"].include?(self.asset_content_type) 
end
16
ответ дан 5 December 2019 в 09:25
поделиться

Одно из решений - использовать обратный вызов before_post_process :

 # Model with has_attached_file
 before_post_process :forbid_pdf  # should be placed after line with has_attached_file 

 private
 def forbid_pdf
   return false if (data_content_type =~ /application\/.*pdf/)
 end

data_content_type следует заменить на соответствующее поле в вашей модели.

Еще одно решение, которое я придумал, - создать собственный процессор для изображений, в котором мы должны проверять тип файла, и если это не pdf, запустить стандартный процессор Paperclip :: Thumbnail .

2
ответ дан 5 December 2019 в 09:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: