Избегайте создания стилей, если `validates_attachment_content_type` терпит неудачу - PullRequest
2 голосов
/ 09 мая 2011

Я использую гем Paperclip для управления загрузкой файлов в приложении Rails 3. Я только что добавил

validates_attachment_content_type :logo, :content_type => ['image/jpeg', 'image/png', 'image/gif'], :message => "should be \"PNG, GIF, or JPG\""

для моей модели, и, похоже, она работает, за исключением того, что у меня есть 4 стиля, которые должны вызываться на загруженных изображениях, и они, кажется, вызываются даже при сбое проверки.

Вот ошибки проверки, которые возвращаются ...

Logo content type should be "PNG, GIF, or JPG"    Logo /var/folders/cT/cTTe57AGGBiLXq0PUS+RBU+++TI/-Tmp-/stream20110509-3068-ti9gja.doc is not recognized by the 'identify' command.
Logo /var/folders/cT/cTTe57AGGBiLXq0PUS+RBU+++TI/-Tmp-/stream20110509-3068-ti9gja.doc is not recognized by the 'identify' command.
Logo /var/folders/cT/cTTe57AGGBiLXq0PUS+RBU+++TI/-Tmp-/stream20110509-3068-ti9gja.doc is not recognized by the 'identify' command.
Logo /var/folders/cT/cTTe57AGGBiLXq0PUS+RBU+++TI/-Tmp-/stream20110509-3068-ti9gja.doc is not recognized by the 'identify' command.

Как я могу остановить обработку стилей (или попытку сделать это)?

Не уверен, имеет ли это значение, но изображения хранятся в Amazon s3.

1 Ответ

0 голосов
/ 04 июня 2012

Кажется, это известная проблема в Paperclip, которую никто не исправил. Была проблема Github , но она была закрыта.

Одной из альтернатив будет проверка типа с использованием before_post_process. Что-то вроде:

class Foobar
  before_post_process :check_content_type

  def check_content_type
    return ['image/jpeg', 'image/png', 'image/gif'].include?(logo.file_type)
  end
end

Это должно остановить обработку, если файл не подходит под эти типы контента.

...