我想走動使用CarrierWave
重組的文件夾結構,我的S3存儲的文件。如何使用CarrierWave重新組織現有的文件夾層次結構?
我來到這裏的一類所有圖像都被上傳到一個名爲/uploads
文件夾中現有的Rails應用程序。如果兩個用戶使用相同的文件名上傳不同的圖像,則會造成問題,第二個圖像將覆蓋第一個。爲了解決這個問題,我需要重新組織文件夾根據ActiveRecord
對象實例的每個圖像放置在自己的目錄。我們正在使用CarrierWave
來管理文件上傳。
老上傳的代碼有以下方法:
def store_dir
"uploads"
end
我修改的方法,以反映我的新的文件存儲方案:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
這個新圖像的偉大工程,但打破網址舊圖像。現有的圖像報告其網址爲新的文件夾中時,立即更改模型,而圖像文件仍然存儲在/uploads
。
> object.logo.store_dir
=> "uploads/object/logo/133"
這是不正確的。該物體應在/uploads
中報告其徽標。
我的解決辦法是寫一個腳本來移動圖像文件,但我沒有找到CarrierWave正確的方法來移動文件。我的腳本看起來是這樣的:
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
我應該在第三行將腳本移動到新的位置?
你有沒有找到解決方案?我有同樣的問題。 – 2013-08-30 03:47:24
這可能不適用於你,除非你使用霧,但這是我找到的最好的解決方案,我一直在尋找很難:http://stackoverflow.com/questions/19038733/need-to-更改-s-storage-directory-of-s3-bucket-carrierwave -f – 2013-12-19 22:25:10