2011-02-11 4 views
5

저는 클립으로 관리되는 여러 가지 이미지 첨부 파일이있는 모델을 가지고 있습니다. 최근에 우리는 모델의 동작을 변경하여 acts_as_paranoid를 사용하여 소프트 삭제하고 다시 살릴 수있었습니다. 우리가 모델을 부드럽게 삭제할 때 clipclip은 첨부 파일을 삭제하는 것을 제외하고는 모두 잘 작동합니다.acts_as_paranoid 모델의 첨부 파일을 paperclip에서 삭제하지 않으려면 어떻게해야합니까?

문서 클립 문서와 코드를 검토 한 결과이 문제를 피할 수있는 확실한 방법이 없습니다. 클립 콜백에 모델의 콜백을 삭제하고 첨부 파일을 계속 유지할 수 있도록 말하고 싶습니다.

답변

7

종이 클립에는 이제 preserve_files 옵션이 있습니다. 이제는 무시하지 않아도됩니다.

의 옵션을 소프트 - 삭제에 대한

파일 보관은 일시 삭제 모델로 잘 재생하려면 첨부 파일을 보존 할 수 있습니다. (acts_as_paranoid, 편집증 등)

has_attached_file :some_attachment, { 
    :preserve_files => "true", 
} 

이 모델이 파괴됩니다 때 개체가 나중에 복원 될 때 여전히 존재하는 것, 그래서 전멸되는 some_attachment을 방지 할 수 있습니다.

https://github.com/thoughtbot/paperclip#file-preservation-for-soft-delete

+0

신난다! 업데이트 해 주셔서 감사합니다. 다시 오셔서보고 싶습니다. –

+0

다른 사람은이 설정 옵션을 사용하더라도 Paperclip이 여전히 레코드의 중요한 첨부 파일 속성을 모두 nil으로 설정한다는 사실을 알고 있습니까? 따라서 모든 첨부 파일 속성이 이제는 'nil'이므로 복원을 위해'deleted_at' 속성을 지우는 것만으로는 충분하지 않습니다. –

2

크레이지 당신이 물어 본 직후에 자신의 질문에 대한 답을 몇 번이나 발견 할까? 다른 사람들이 같은 문제를 가지고있는 경우에 대비하여 여기에 있습니다. 아니면 누군가가 더 나은 해결책을 가지고있을 수도 있습니다. 나를 위해 일한 것은 paperclip이 before_destroy 콜백에 응답하는 데 사용하는 메서드를 재정의하는 것이 었습니다. 이 코드를 내 코드에 넣었으므로 나중에 첨부 파일을 보존하므로 나중에 모델을 삭제 취소해도됩니다.

protected 

    def destroy_attached_files 
    logger.error "-------------- This is me NOT destroying my attachments" 
    end 
관련 문제