Ich versuche, Dateien um meine S3-Bucket mit CarrierWave
zu verschieben, um die Ordnerstruktur zu reorganisieren.Wie kann ich eine bestehende Ordnerhierarchie mit CarrierWave reorganisieren?
Ich kam zu einer vorhandenen Rails-Anwendung, wo alle Bilder für eine Klasse in einen Ordner namens /uploads
hochgeladen werden. Dies führt zu Problemen, wenn zwei Benutzer unterschiedliche Bilder mit demselben Dateinamen hochladen, während das zweite Bild das erste Bild überschreibt. Um dies zu beheben, möchte ich die Ordner neu organisieren, um jedes Bild in einem eigenen Verzeichnis gemäß der ActiveRecord
Objektinstanz zu platzieren. Wir verwenden CarrierWave
, um Datei-Uploads zu verwalten.
Der alte Uploader Code hatte die folgende Methode:
def store_dir
"uploads"
end
ich die Methode geändert, um mein neues Dateispeicherschema widerspiegeln:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
Dies funktioniert gut für neue Bilder, aber bricht die URL für alte Bilder. Vorhandene Bilder melden ihre URL sofort im neuen Ordner, wenn ich das Modell ändere, während die Bilddateien immer noch in /uploads
gespeichert sind.
> object.logo.store_dir
=> "uploads/object/logo/133"
Dies ist nicht korrekt. Dieses Objekt sollte sein Logo in /uploads
melden.
Meine Lösung ist ein Skript schreiben, um die Bilddateien zu verschieben, aber ich habe nicht die richtigen Methoden in CarrierWave gefunden, um die Dateien zu verschieben. Mein Skript würde wie folgt aussehen:
MyClass.all.each |image|
filename = file.name #This method exists in my uploader, returns the file name
#Move the file from "/uploads" to "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
Was soll ich in Zeile drei meiner Skript tun, um die Datei an eine neue Position zu bewegen?
Sie haben jemals eine Lösung gefunden? Ich habe das gleiche Problem. –
Dies ist vielleicht nicht auf Sie anwendbar, es sei denn, Sie verwenden Nebel, aber das ist die beste Lösung, die ich gefunden habe und ich habe ziemlich hart gesucht: http: //stackoverflow.com/questions/19038733/need-to- change-the-storage-Verzeichnis-von-Dateien-in-s3-bucket-carrierwave-f –