2010-05-10 16 views
6

Estoy usando paperclip para manejar mis archivos cargados, y en una situación no quiero que el archivo sea obligatorio. Sin embargo, quiero asegurarme de que sea un tipo de archivo específico cuando esté presente.Paperclip - Validar tipo de archivo pero no Presence

tengo esto:

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

Y cuando no tengo el archivo de sonido actual, que me dice que no es uno de los tipos de contenido válidos. He intentado agregar '' a la matriz :content_type, ¡que tampoco funciona!

También intenté crear un procedimiento lambda para la propiedad :if, pero no puedo ejecutarlo sin algún tipo de error.

¿Falta algo aquí?

+0

me pregunta hecha lo más similar hace un tiempo http://stackoverflow.com/questions/2257041/smarter-paperclip-validations - Tengo que trabajar con un proc. tal vez te ayude – stephenmurdoch

Respuesta

0

trozo de mi modelo:

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'] 

y si proporciono ningún archivo de imagen, @ obj.update_attributes (..) plantea ningún error, pero valida si doy un archivo. ¿Tal vez usas una versión anterior de clip para papeles?

gem list | ack paperclip 
paperclip (2.3.1.1) 
+0

Tengo la versión 2.3.2 y tengo el mismo problema :( –

4

Supongo que podría intentar una 'validación condicional' donde la condición es si hay un archivo presente?

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

Me di cuenta de que tenía que hacer esto después de actualizar a Paperclip 2.3.2 desde Paperclip 2.3.1.1 –

0

primer lugar quiero decir que soy nuevo en tanto Ruby y Rails. En segundo lugar, no sé si esto se puede aplicar a los archivos de audio, pero con las imágenes que acabo de configurar una imagen predeterminada para que de una forma u otra haya una foto asociada a cada registro.

has_attached_file :photo, styles: { small: "64x64", med: "100x100", large: "200x200" }, default_url: "/images/no-image-available.png" 
Cuestiones relacionadas