2011-12-12 49 views
3

我從carrierwave開始上傳文件,到目前爲止一直很滿意。我的文件存儲在亞馬遜s3上,這很容易,它的工作可靠。是否有可能有載波的動態存儲路徑?

現在我有一個名爲pictures的模型和一個上傳者名稱MainUploader。我需要一個特殊的動態路徑來保存這些文件上傳時。

我也在使用設計,我有current_user我可以從我的視圖和控制器訪問,但不能從carrierwave上傳器訪問。我需要的文件的路徑是這樣的

uploads/#{current_user.location}/#{current_user.first_name}/images

,但我無法從上傳訪問CURRENT_USER並沒有看到任何的替代品。這種類型的動態路徑可能與carrierwave(無需重寫大量的寶石)?

任何指針,非常感謝。 謝謝你的幫助。

回答

5

只是爲了防止任何人在谷歌搜索這裏想知道什麼。

我最終做的是在我的模型(pictures)上創建一個belongs_to關係到用戶模型。然後從carrierwave上傳者我可以做model.user.first_name這相當於picture.user.first_name。所以我可以把這個model.user放在我的路徑中,並以這種方式訪問​​任何用戶屬性。希望這可以幫助別人。

喜歡的東西:

def store_dir 
    "#{model.user.first_name}/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.title}" 
end 

PS 注意我用的也是model.title這是因爲我希望picture.title是在路徑也是如此。雖然不是最佳做法。如果你這樣做,一定要在生產環境中解析model.title,這樣可以給你一個有效的文件夾名稱/ url。

相關問題