2012-04-23 19 views
14

używam tej metody do zmiany nazwy obrazu przed oszczędności:Spinacz - zmiana nazwy pliku przed zapisaniem

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

    before_post_process :rename_avatar 

Obraz zostanie zmieniona przez obecnego czasu, ale nie jest dodawany typ pliku, zamiast 1334487964. jpg jest zapisany tylko 1334487964..

Czego mi brakuje? Myślałem : nazwa_pliku zawiera tylko nazwę pliku - bez plików typu

Odpowiedz

22

To jest sposób w jaki mogę rozwiązać mój problem:

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

To rozwiązanie działa dobrze, z wyjątkiem faktu, że edytujesz rekord. w moim przypadku mam 3 załączniki, zdjęcie, certyfikat1, certyfikat2, jeśli zmienię zdjęcie, muszę ponownie przesłać certyfikaty, ponieważ gdy procedura przejdzie do wywołania zwrotnego "before_post", zapisuje nową i nieistniejącą nazwę pliku w DB. Czy masz na to rozwiązanie? Dzięki! ;) – drmwndr

Powiązane problemy