如何使用CarrierWave重命名現有的圖像? (這個問題很接近,但不是真的一樣:Renaming uploaded files with Carrierwave)例如,如果model.image.url
是foo-bar-jpg
如何將文件和對應的數據庫字段都重命名爲foo-bar.jpg
?重命名現有的CarrierWave文件
model.image.recreate_versions!
將創建新文件,但在數據庫中它不會更改模型的圖像字段。
如何使用CarrierWave重命名現有的圖像? (這個問題很接近,但不是真的一樣:Renaming uploaded files with Carrierwave)例如,如果model.image.url
是foo-bar-jpg
如何將文件和對應的數據庫字段都重命名爲foo-bar.jpg
?重命名現有的CarrierWave文件
model.image.recreate_versions!
將創建新文件,但在數據庫中它不會更改模型的圖像字段。
我用這裏所描述的技術:How to assign a remote file to Carrierwave?
這可能不是最好的方法,但它爲我工作。我的遠程文件恰好是舊的文件名/路徑。
首先,我更改了Carrierwave上傳器以獲得我想要的新文件名稱樣式。然後,我寫了一個rake任務通過記錄遍歷和更新文件是這樣的:
model.remote_image_url = old_image_url
model.save!
這將重新上載現有的文件,設置根據您的更新上傳的名稱/路徑(並重新創建所有版本)。我還沒有解決清理舊文件的問題,但我不確定如果您的store_dir是相同的(我的更改也如此),這將如何工作。
請務必在通過整個桌子之前徹底測試一些記錄,否則容易造成混亂的事情。請注意,更改store_dir會打破現有文件的所有查找。
Carrierwave的locomotive branch似乎已經重新命名支持 - 具體文件是here。
有主,當你轉換文件類型file rename support,但沒有重命名支持:
"This should help with situations where a file has multiple versions,
and at least one of the versions is of a different format than the master version."
發現這個,好像過時了,但也許可以幫助別人: https://github.com/stvkoch/carrierwave_single_store