2017-02-27 1 views
0

Ich versuche, ein Modell und die entsprechenden Tabellen umzubenennen, es hat gut funktioniert. Was ist mit dem Upload-Ordner? Verwendet so etwas, das den Uploader-Ordner an den Modellklassennamen gebunden hat. Jetzt hat sich der Klassenname geändert.Wie benenne ich einen Ordner für Uploads in carrierwave um, wenn ich Modelle umbenenne und die db migriere?

class CsvImportUploaderUploader < CarrierWave::Uploader::Base 
    permissions 0755 

    storage :file 

    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 
end 
+0

Es scheint, dass Sie den Ordner in einer Migration oder als Teil einer Rake-Aufgabe manuell umbenennen müssen. Und jetzt kann ich mir vorstellen, wie dies ein Albtraum auf einem verteilten System/Cluster sein kann. –

Antwort

0

Sie können einfach den gleichen Modellnamen verwenden. Wenn Sie ein User-Modell hatten, die von umgerechnet werden würde:

User => user 

model.class.to_s.underscore nur gibt die Klassennamen selbst als ein String unterstrichen, die „Benutzer“ in diesem Beispiel.

Wenn Sie alles behalten möchten, da es nur es buchstäblich schreiben wurde:

"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
"uploads/user/#{mounted_as}/#{model.id}" 

Wenn Sie nicht über den Namen ist es egal, die Dinge werden nur Speicher sein in einen anderen Ordner. Wenn Sie ein User-Modell haben und verändert es zu einem Kundenmodell ändert es wie folgt aus:

"uploads/user/#{mounted_as}/#{model.id}" 
"uploads/customer/#{mounted_as}/#{model.id}" 

Wie Sie sehen können, werden sie sein Geschäft nur in einem anderen Ordner. Alle Ihre Links sollten weiterhin funktionieren.

Verwandte Themen