2011-09-16 70 views
2

我正在從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未被正確覆蓋。爲了使這項工作正確,我需要做些什麼?

+0

你能告訴改變它(一)型號代碼安裝上傳,和(b)如果你把舊圖像(以及你的意思是什麼)? –

+0

使用型號代碼更新了它。對不起,如果它不清楚舊圖像。舊圖像由attachment_fu創建。我希望carrierwave使用該圖像和相同的路徑。 – keithepley

+2

嗯,我想知道它是否只在實際上傳時使用'store_dir',而不是如果您手動設置? –

回答

0

Carrierwave默認基地位置是公用文件夾

嘗試使用

CarrierWave.configure do |config| 
    config.root = Rails.root 
end