2010-05-25 73 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