2012-04-25 77 views
0

禁用緩存文件名這是我的代碼,以獲得UUID:Rails 3中 - 在file_column插件

def manage_id 
    self.id = UUIDTools::UUID.random_create().to_s.upcase if self.id.blank? 
    end 

這完全適用於我的對象的主鍵。

我的問題是我想用一個UUID命名一個上傳的文件......並且我爲不同的上傳獲得相同的UUID。例如,我將有一個UUID,2分鐘後,另一個對象將具有相同的UUID!

這是類代碼來命名我的形象:

:filename => "#{UUIDTools::UUID.random_create().to_s.upcase}.jpg" } 

我不明白生成UUID什麼時候可以是問題...

我的發展有沒有問題! !

編輯1:這個問題是不是與自身UUID,這是一個時間戳一樣...(只有在製作)

編輯2:我發現這個問題。設置:

config.cache_classes =真

是在生產模式的問題。它確實將UUID保存在內存中。

我認爲我不能在生產模式(爲了性能)切換到false,那麼停用此插件名稱功能的緩存的最佳方法是什麼?

編輯3:我補充完整的代碼我的模型的

class Product < ActiveRecord::Base 

file_column :image, {:magick => { :versions => { "tiny" => "70x70", "small" => "160x240", "high" => "640x960" }}, :store_dir => "public/upload/wine/image", :web_root => "upload/", :filename => "#{UUIDTools::UUID.timestamp_create().to_s.upcase}.jpg" } 

end 

所以,正如我所說的所產生的UUID生產緩存。我不知道如何強制這個模型或插件file_column不被緩存?

+0

添加代碼PLZ – Fivell 2012-04-25 15:36:07

+0

的全例子我加入了完整的代碼。謝謝。 – 2012-04-25 15:59:02

+0

老實說,我無法找到關於這個插件的文件名選項的聲明。你使用這個https://github.com/tekin/file_column? – Fivell 2012-04-25 23:17:35

回答

0

它不適合你的原因,因爲你總是使用預先初始化的選項。 但是你可以嘗試改變一些東西來改善它。例如,你可以使用lambda表達式爲calcaulationg名...嘗試像未來

file_column :image, {:magick => 
          { :versions => 
           { "tiny" => "70x70", "small" => "160x240", "high" => "640x960" } 
          }, 
          :store_dir => "public/upload/wine/image", 
          :web_root => "upload/", 
          :filename => lambda { "#{UUIDTools::UUID.timestamp_create().to_s.upcase}.jpg"} } 

和改變這種

指定文件名臨時圖像路徑。更新代碼@class TempUploadedFile store_upload方法行號219

@filename = options[:filename] || FileColumn::sanitize_filename(file.original_filename) 

options_file_name = options[:filename].respond_to?(:call) ? options[:filename].call : options[:filename] 


    @filename = options_file_name || FileColumn::sanitize_filename(file.original_filename) 
+0

它完美的工作!做得好 !這是一個戲劇,因爲我最近幾個小時試過回形針,現在我有2個選擇! – 2012-04-26 08:44:25

+0

我認爲paper_clip是比這個插件更新和更強大的gem – Fivell 2012-04-26 09:04:14

+0

確切的。我砍了幾年file_column。是時候改變了。我只是希望Paperclip不會消耗太多內存。 – 2012-04-26 09:10:53