2016-07-13 16 views
1

Wie aktualisiere ich die Dateinamen aller Paperclip-Objekte, nachdem ich ein Modell umbenannt und den Tabellennamen aktualisiert habe?Aktualisierung des Dateinamens der Büroklammer nach dem Umbenennen des Modells?

Paperclip speichert sie in einem Pfad, der den Modellnamen enthält. Ich suche einen automatischen Weg wahrscheinlich in einer Migration, die die Dateipfade aktualisieren würde.

+0

müssen Sie die Datensätze aktualisieren? weil Sie die Option haben, den Klassennamen zu überschreiben, den Büroklammer zum Speichern verwendet, und Sie müssen Ihre Daten nicht ändern – neydroid

+0

Ich muss sie umbenennen und den Namen für ein anderes Modell verwenden. –

Antwort

0

Sie werden auf die Methode zu übergeben haben, die Option für die neue url:

Dies sind die Standardeinstellungen, die verwendet Paperclip:

https://github.com/thoughtbot/paperclip/blob/95acf3b898bd782f4429d42fd2d8812505390328/lib/paperclip/attachment.rb#L24

{ 
    path: ':rails_root/public:url', 
    url: '/system/:class/:attachment/:id_partition/:style/:filename' 
} 

Du musst überschreiben Sie das Verhalten und ändern Sie :class zu Ihrem neuen Modellnamen, der Pfad wird dynamisch durch die URL bestimmt:

class User < ActiveRecord::Base 
    has_attached_file :avatar, url: '/system/:class/:attachment/:id_partition/:style/:filename' 
end 

Sie müssen vorsichtig sein, wenn Sie den alten Modellnamen in einem anderen Modell verwenden, es sei denn, Sie überschreiben auch die andere Modelloption url.

+0

'attachment_file_name' enthält nur den Dateinamen nicht den tatsächlichen Pfad. –

+0

Entschuldigung, du hast recht, ich schaue mir den Edelstein-Code an – neydroid

Verwandte Themen