2010-12-15 10 views
5

プロフィール写真など、ユーザーが保存したS3からファイルを削除する必要があります。ちょうど@user.logo.destroyを呼び出すことはそのトリックをしていないようです - 私はログに[paperclip] Saving attachments.を得て、そのファイルはS3バケットのすぐそこにとどまります。Paperclip - Amazon S3からファイルを削除しますか?

ファイル自体はどのように削除できますか?

答えて

2

これは、添付ファイルを削除するために使用することができペーパークリップからのメソッドです:

module Paperclip 
    class Attachment 
    # 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 
     queue_existing_for_delete 
     @errors   = {} 
    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 

ですから、参照エラーが発生していない場合のみ、添付ファイルを削除し破壊します。私はS3に対して自分自身のセットアップでそれを試したので、破壊の仕組みが分かっています。

あなたの場合の問題は、保存をキャンセルする検証がある可能性がありますか?私はvalidates_attachment_presenceか何か類似していますか?

@ user.logo.destroyを試して、@ user.errorsの内容をチェックしてエラーメッセージが報告されているかどうかを調べる方法があると思います。

+0

ここに記載されているように、ここで私の質問をご覧ください。http://stackoverflow.com/questions/14144454/how-to-hook-for-destroy-of-a-model-that-belongs-別のモデル – simo

1

私は完全に破壊するとクリアとの間にその違いを理解していないが、これは、あなたの質問への答えのように思える(私は知らないどのモデルhas_attached_file、ページや画像):

Rails Paperclip how to delete attachment?

関連する問題