2010-05-10 17 views
6

Sto usando paperclip per gestire i miei file caricati, e in una situazione non voglio che il file sia obbligatorio. Tuttavia, desidero assicurarmi che sia un tipo di file specifico quando è presente.Graffetta - Convalida tipo di file ma non Presenza

ho questo:

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

E quando non ho alcun file audio presente, mi dice che non è uno dei tipi di contenuto validi. Ho provato ad aggiungere '' alla matrice :content_type, che inoltre non funziona!

Ho anche tentato di creare una procedura lambda per la proprietà :if, ma non riesco a farla funzionare senza qualche tipo di errore.

Manca qualcosa?

+0

Ho chiesto come risposta un po 'indietro http://stackoverflow.com/questions/2257041/smarter-paperclip-validations - Ho capito che funziona con un proc. forse ti aiuterà – stephenmurdoch

risposta

0

pezzo del mio modello:

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

e se fornisco nessun file di immagine, @ obj.update_attributes (..) solleva alcun errore, ma convalida se fornisco un file. Forse usi la versione più vecchia di paperclip?

gem list | ack paperclip 
paperclip (2.3.1.1) 
+0

Ho la versione 2.3.2 e ho lo stesso problema :( –

4

Immagino si possa provare una "convalida condizionale" in cui la condizione è se un file è 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

Mi sono reso conto che dovevo farlo dopo aver aggiornato a Paperclip 2.3.2 da Paperclip 2.3.1.1 –

0

Prima di tutto lasciatemi dire che io sono una novità per entrambi Ruby e Rails. In secondo luogo, non so se questo può essere applicato ai file audio ma con le immagini ho appena impostato un'immagine di default in modo che in un modo o nell'altro sia presente una foto associata a ciascun record.

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