我正在從attachment_fu移動到carrierwave,因爲attachment_fu與Rails 3斷開了,並且希望能夠使用我已有的attachment_fu圖像文件,而不是carrierwave製作新的並將它們移動到其他地方。如何覆蓋CarrierWave存儲圖像的位置? def store_dir似乎不工作
我的圖片按id分區,所以如果用戶ID是61
他們上傳了一個名爲"foo.png"
,那麼他們的老attachment_fu圖像會在"public/images/users/0000/0061/foo.png"
在我的用戶模型文件,我安裝carrierwave圖片上傳搭配:
attr_accessible :user_avatar
mount_uploader :user_avatar, UserAvatarUploader
在我UserAvatarUploader
,我有這樣的:
def store_dir
File.join Rails.root, "public/images/users", ("%08d" % model.id).scan(/\d{4}/).join("/")
end
所以WH恩我設置:user_avatar
,我應該得到"public/images/users/0000/0061/foo.png"
但是當我嘗試在User
模型設置:user_avatar
舊圖像
user.user_avatar = "#{Rails.root}/public/images/users/0000/0061/foo.png"
它回來了,就像這樣"/uploads/tmp/20110916-1244-15398-7724/foo.png"
看來, store_dir
未被正確覆蓋。爲了使這項工作正確,我需要做些什麼?
你能告訴改變它(一)型號代碼安裝上傳,和(b)如果你把舊圖像(以及你的意思是什麼)? –
使用型號代碼更新了它。對不起,如果它不清楚舊圖像。舊圖像由attachment_fu創建。我希望carrierwave使用該圖像和相同的路徑。 – keithepley
嗯,我想知道它是否只在實際上傳時使用'store_dir',而不是如果您手動設置? –