2017-02-27 63 views
0

我想重命名模型和相應的表,它工作得很好。上傳文件夾怎麼樣?使用類似這樣的上傳器文件夾綁定到模型類名稱。現在類名已經改變了。如何在重命名模型和遷移數據庫時重命名用於carrierwave上載的文件夾?

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

看來你必須在遷移或作爲rake任務的一部分手動重命名文件夾。 現在我可以想象這是如何成爲分佈式系統/集羣上的噩夢。 –

回答

0

您可以繼續使用相同的型號名稱。 如果你有一個用戶模式,將從轉換:

User => user 

model.class.to_s.underscore只返回類名稱本身作爲一個字符串,強調這是「用戶」,在這個例子。

如果你想保留一切,因爲它是隻寫它的字面:

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

如果你不關心的名稱,只是有在不同的文件夾存儲。 如果你有一個用戶模型,並將其改變爲客戶模式它的變化是這樣的:

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

正如你所看到的,他們只是在不同的文件夾存儲。您的所有鏈接仍應繼續工作。