Скрепка, использующая одно и то же поле для файлов изображений и не изображений. - PullRequest
1 голос
/ 20 октября 2011

Я использую скрепку для хранения файлов, связанных с моделью. Файлы могут быть в различных форматах в зависимости от описания. Я указал следующее в модели:

require 'paperclip'

class Document < ActiveRecord::Base
  belongs_to :candidate
  attr_accessible :candidate_id, :description, :media

  has_attached_file :media, :styles => { :profile => "100x100>" }

  validates_attachment_presence :media
  validates_attachment_size :media, :less_than => 3.megabytes
end

До этого все работало нормально. Недавно после некоторых системных обновлений archlinux (возможно, Imagemagick был обновлен) у меня возникла следующая ошибка при сохранении определенных форматов, например .doc .xls и т. д., это работает для изображений, хотя.

* Media /tmp/stream20111020-2130-zeux3k-0.doc is not recognized by the 'identify' command.

Когда я запускаю команду идентификации с файлом, я получаю следующее.

$ identify  /tmp/stream20111020-2130-zeux3k-0.doc 
identify: no decode delegate for this image format `/tmp/stream20111020-2130-zeux3k-0.doc' @ error/constitute.c/ReadImage/532

Должен ли Paperclip пытаться изменить размер документа word?

Что-нибудь, я могу с этим поделать?

1 Ответ

0 голосов
/ 20 октября 2011

Я до сих пор не знаю, почему это работало раньше, а теперь не работает, но я нашел обходной путь, предоставив опции условного стиля для paperclip. Нравится следующее ...

has_attached_file :media, :styles => lambda { |attachment| (attachment.instance.description == "Foto") ? { :profile => "100x100>" }  : [] }

Я все еще хочу быть более конкретным и указать стиль в зависимости от типа контента

...