2010-05-10 2 views
6

Я использую paperclip для обработки загружаемых файлов, и в одной ситуации я не хочу, чтобы файл был обязательным. Однако я хочу убедиться, что это конкретный тип файла, когда он присутствует.Paperclip - проверить тип файла, но не присутствовать

У меня есть это:

class TestModel < ActiveRecord::Base 
    #stuff 
    has_attached_file :sound #etc... 
    validates_attachment_content_type :sound, :content_type => ['audio/mp3', 'application/x-mp3'] 
end 

И когда у меня нет звуковой файл присутствует, он говорит мне, что это не один из допустимых типов содержимого. Я попытался добавить '' в массив :content_type, который также не работает!

Я также попытался создать процедуру лямбда для свойства :if, но я не могу заставить его работать без какой-либо ошибки.

Все, что отсутствует здесь?

+0

Я спросил как похожий вопрос некоторое время назад http://stackoverflow.com/questions/2257041/smarter-paperclip-validations - Я получил его работу с proc. возможно, это поможет вам – stephenmurdoch

ответ

0

кусок моей модели:

has_attached_file :logo, :styles => { :medium => ["300x300>", :png], :thumb => ["100x100>", :png] } 
    validates_attachment_size :logo, :less_than => 2.megabytes 
    validates_attachment_content_type :logo, :content_type => ['image/jpeg', 'image/png', 'image/gif'] 

, и если я не предоставляю файл изображения, @ obj.update_attributes (..) не вызывают ошибок нет, но проверяет, если я обеспечиваю файл. Может быть, вы используете более старую версию скрепки?

gem list | ack paperclip 
paperclip (2.3.1.1) 
+0

У меня есть версия 2.3.2 и у меня такая же проблема :( –

4

Я думаю, вы могли бы попробовать «условную проверку», где условие есть, если файл присутствует?

class TestModel < ActiveRecord::Base 
    #stuff 
    has_attached_file :sound #etc... 
    validates_attachment_content_type :sound, :content_type => ['audio/mp3', 'application/x-mp3'], :if => :sound_attached? 

    def sound_attached? 
    self.sound.file? 
    end 
end 
+0

Я понял, что должен был это сделать после обновления до Paperclip 2.3.2 от Paperclip 2.3.1.1 –

1

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

https://github.com/thoughtbot/paperclip/issues/125

0

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

has_attached_file :photo, styles: { small: "64x64", med: "100x100", large: "200x200" }, default_url: "/images/no-image-available.png" 
Смежные вопросы