2014-02-06 43 views
1

我試圖導入數以千計的項目,其中大部分使用相同的圖像。我想在上傳圖片前檢查是否已經存在相同的名稱,這樣我可以節省時間和資源。我使用亞馬遜s3作爲存儲。我似乎無法找到有關它的文檔中的任何內容。我知道我可以做像image.exists這樣的東西嗎?但是我在模型中做了什麼來不上傳圖像,但仍然將數據庫中的所有內容都設置爲指向現有圖像。Rails回形針如果圖像已經存在,則跳過上傳

的Rails 3.2.12
回形針3.2.1

validates_attachment_content_type :image, :content_type => ['image/jpeg', 'image/png', 'image/gif', 'image/pjpeg'] 

has_attached_file :image, 
       :storage => :s3, 
       :s3_credentials => "#{Rails.root.to_s}/config/s3.yml", 
       :path => "images/:attachment/:style/:filename", 
       :styles => { :original => '64x64', :small => '32x32' } 

回答

0

我以前碰到這個確切的問題爲好,卻沒有完全找到了解決這個。我認爲這是因爲Paperclip的設計,每個記錄都需要一個獨特的附件。

您可以嘗試執行類似copying an existing attachment to another record的操作,但仍會將「已複製」的附件上載到記錄中。

我能找到的最佳選擇(不分叉和嘗試monkeypatch回形針)是將附加文件處理附加到後臺作業,如Resque。這將減少您關注的時間。至於資源方面,S3相當便宜 - 我擁有數十萬張圖像的S3實例從來沒有超過0.15美元,但它是一個沒有太多流量的網站。

+0

是的,我更擔心在導入時節省時間,沒有15000的圖像。 – Mentch

+0

我聽到你的聲音。但將其移至Resque之類的東西將會使這種影響不那麼明顯。 – CDub

+0

如果我在保存並從文件中手動更新數據庫之前刪除過程中的實際圖像,該怎麼辦?這會工作嗎? – Mentch

相關問題