Paperclip – 从Amazon S3删除文件?

我需要能够从用户存储的S3中删除文件,例如个人资料照片。 只是调用@user.logo.destroy似乎没有办法 – 我得到[paperclip] Saving attachments. 在日志中,文件保留在S3存储桶中。

如何删除文件本身?

这是Paperclip中可用于删除附件的方法:

 # Clears out the attachment. Has the same effect as previously assigning # nil to the attachment. Does NOT save. If you wish to clear AND save, # use #destroy. def clear(*styles_to_clear) if styles_to_clear.any? queue_some_for_delete(*styles_to_clear) else queue_all_for_delete @queued_for_write = {} @errors = {} end end # Destroys the attachment. Has the same effect as previously assigning # nil to the attachment *and saving*. This is permanent. If you wish to # wipe out the existing attachment but not save, use #clear. def destroy clear save end 

所以你看,如果没有错误发生,destroy只删除附件。 我已经尝试了我自己的设置对S3,所以我知道毁灭工作。

您的案例中的问题可能是您有任何取消保存的validation吗? 即validates_attachment_presence或类似的东西?

我认为找到的一种方法是尝试@ user.logo.destroy,然后检查@ user.errors的内容,看它是否报告任何错误消息。

这似乎是你问题的答案,虽然我不完全理解他们在destroy和clear之间的区别(我不知道哪个模型has_attached_file,page或image):

Rails Paperclip如何删除附件?