2010-05-25 75 views
4

我有一個使用Paperclip來管理文件的模型。如何讓回形針刪除文件

我刪除模型後,我顯然希望該文件被刪除,但我似乎無法找到如何使用Paperclip刪除文件。

我試過self.sourcefile = nil if !sourcefile.dirty?before_destroy def,但是沒有效果。

(我希望能夠把它刪除本地文件時我測試,然後在S3上,當我使用 - 所以我需要一個純粹的回形針溶液)

任何想法?

回答

10

無法刪除文件時,回形針非常嘈雜。

無需任何特殊的配置,當你刪除一個對象,相關文件,如果有的話,都被刪除了,並且這將記入日誌(至少在開發模式):

[paperclip] Deleting attachments. 
[paperclip] deleting /clipper/public/system/avatars/3/original/whatever.JPG 

如果回形針無法刪除文件,它只會拋出一個異常。

所有這些測試都使用了最新的Paperclip(5月25日從github上克隆)。如果您的版本較舊,您可能需要更新它,然後在觀看日誌的同時運行一些測試。

+0

是的,我可以看到它在日誌中說,但它從來沒有反映在我的文件系統上,所以我只選擇使用直接的AWS訪問,因爲回形針也不起作用(不管文件刪除的事情) – 2010-05-25 23:57:55

0

我可能是錯的,但我相信它應該自動執行它,因爲has_attached_file增加了一個before_destroy回調。 Source

編輯:如果它不工作,也許你可以嘗試自己打電話destroy_attached_files,這對我來說似乎很奇怪。 Source

+0

我正在使用它,但我的文件仍然存在。 :( – 2010-05-25 03:40:54

+0

非常奇怪,我能想到的另一件事是開放問題:/ http://github.com/thoughtbot/paperclip/issues – theIV 2010-05-25 03:42:32

+0

是的,這真的很令人沮喪,我試着調用'destroy_attached_files'來這些文件仍然在那裏,我可能只是放棄回形針 – 2010-05-25 04:00:03