2012-04-23 19 views
14

Speichern ich diese Methode verwenden, um das Bild vor dem Speichern Umbenennung:Paperclip - Datei umbenennen, bevor

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

    before_post_process :rename_avatar 

Das Bild von der aktuellen Zeit umbenannt wird, aber es gibt nicht den Dateityp, statt 1334487964 hinzugefügt. jpg wird nur gespeichert 1334487964..

Was fehlt mir dort? Ich dachte : file_name nur den Dateinamen enthält - ohne den Dateityp

Antwort

22

Dies ist die Art und Weise, wie ich mein Problem zu beheben:

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

Diese Lösung funktioniert, außer für die Tatsache, wenn Sie den Datensatz bearbeiten. in meinem Fall habe ich 3 Anlagen, Foto, certificate1, certificate2, wenn ich das Foto ändere, muss ich Zertifikate wieder hochladen, weil, wenn die Routine zum Rückruf "before_post" geht, notiert sie einen neuen und nicht existierenden Dateinamen auf DB. Hast du eine Lösung dafür? Vielen Dank! ;) – drmwndr