2012-04-23 21 views
14

Io uso questo metodo per rinominare l'immagine prima di risparmio:Paperclip - rinominare file prima di salvare

def rename_avatar 
    self.avatar.instance_write :file_name, Time.now.to_i.to_s 
    end 

    before_post_process :rename_avatar 

L'immagine viene rinominato con il tempo corrente, ma non c'è aggiunto il tipo di file, invece di 1.334.487,964 mila. jpg viene salvato solo 1334487964..

Cosa mi manca? Ho pensato : file_name contiene solo il nome del file - senza il tipo di file

risposta

22

Questo è il modo come posso risolvere il mio problema:

def rename_avatar 
    #avatar_file_name - important is the first word - avatar - depends on your column in DB table 
    extension = File.extname(avatar_file_name).downcase 
    self.avatar.instance_write :file_name, "#{Time.now.to_i.to_s}#{extension}" 
    end 
+0

Questa soluzione funziona correttamente, ad eccezione del fatto che si sta modificando il record. nel mio caso, ho 3 allegati, foto, certificato1, certificato2, se cambio la foto, devo caricare nuovamente i certificati perché quando la routine va in callback "before_post" registra un nuovo nome di file inesistente su DB. Hai una soluzione per questo? Grazie! ;) – drmwndr

Problemi correlati