2012-12-12 65 views
0

我正在使用carrierwave處理我的上傳。我已經指定了store_dir方式如下:Carrierware:將文件存儲在目錄中accordint to created_at日期

def store_dir 
    "uploads/#{Time.now.year}/#{Time.now.month}/#{Time.now.day}" 
end 

上傳文件的工作就像一個魅力 - 每次我上傳文件時,它在目錄中,它應該結束結束;即「今天的目錄」。

當我嘗試下載文件時,carrierwave正在根據store_dir選項動態構建下載路徑。因此,可以說這是在2012年12月1日上傳的文件可以用fliesystem以下路徑:

/uploads/2012/12/01/file.ext 

將carrierwave檢索爲:

/uploads/2012/12/12/file.ext 

這顯然會導致「無法讀取文件「錯誤。

我帶着2個不同的可能的解決方案:

  1. 創建一個單獨的申請,我將存儲實際文件路徑的文件後,它的創造,然後將使用該值來檢索文件。
  2. 過載retrieve_from_store!方法(它是carrierwave gem的一部分),並使其基於created_at字段從文件記錄構建路徑,而不是從store_dir

我傾向於第二種可能性,因爲它感覺不那麼髒。然而,兩人都覺得「不軌道」。哪一個會更好用,爲什麼?或者carrierwave提供瞭解決這個問題的方法?

回答

4

完全猜在這裏,但通過查看文檔,我認爲這樣的事情應該工作:

def store_dir 
    "uploads/#{model.created_at.year}/#{model.created_at.month}/#{model.created_at.day}" 
end 
+0

非常感謝,就像一個魅力的工作。 – Ruslan

相關問題