2016-02-05 71 views
0

我正在使用Paperclip + Amazon S3來管理用戶的上傳。我的應用程序是在生產了,但是我不得不把文件路徑/ URL從更改AmazonS3中用Paperclip上傳的文件的目錄

has_attached_file :file, 
:url => "#{ENV['AWS_S3_FOLDER']}/attachments/:basename_:id.:extension", 
:path => "#{ENV['AWS_S3_FOLDER']}/attachments/:basename_:id.:extension" 

改變

:url => "#{ENV['AWS_S3_FOLDER']}/attachments/patient_:patientid/:basename_:id.:extension", 
:path => "#{ENV['AWS_S3_FOLDER']}/attachments/patient_:patientid/:basename_:id.:extension" 

現在,我無法訪問已上載於AWS S3的文件,由於到路徑的變化。有沒有辦法將已上傳的文件替換爲正確的路徑,以便我可以訪問它們?另一個問題,有什麼區別:url和:path?

回答

0

我們有一個非常類似的問題。我們這樣做的方式是在我們的模型來創建一個新的領域,所以我們現在有這樣的使用has_attached_file兩個領域:在你定義的NEW_FILE NEW_FILE

has_attached_file:文件

has_attached_file新的正確路徑。

然後在處理添加new_file的遷移中,放入代碼保存!每個記錄。 這將所有文件放在他們需要去的地方。

然後再執行一次遷移以刪除new_file並將has_attached_file:文件更改爲指向正確的路徑。

然後您需要清理S3。在我們的例子中,很容易,因爲我們改變了根路徑,所以我們可以很容易地刪除所有的舊文件。

我們沒有定義:url,只是路徑,但這是一段時間後(Rails 3應用程序)。

我可以告訴你,我們現在在所有新項目中使用carrierwave而不是回形針,因爲我們發現它更好地維護並且工作得更好。

希望這會有所幫助。