2013-02-04 1 views
2

내 문제는 내가 어떤 carrierwaved 모델을 파괴 할 때이다.직렬화 된 모델을 unarchieving 할 때 carrierwave 업 로더 콜백을 건너 뛰는 방법은 무엇입니까?</p> <p><strong>Attachment.rb</strong></p> <pre><code>mount_uploader :attachment, AttachmentUploader </code></pre> <p>나는 데이터베이스에서 제거하고 수정하여 다른 테이블에 직렬화 :

사용자가 삭제 된 첨부 파일을 확인할 때 행을 다시 삽입해야하지만 특정 반송파 콜백을 건너 뛰지 않아야합니다 (필자가 추측하는 마운트 업코더를 건너 뜁니다).

코드는 그렇게 할 수 있지만 불행히도 모델에서 모든 콜백을 제거하므로 필요합니다. 그래서 나는 carrierwave 업 로더 만 건너 뛰고, 그렇지 않으면 생성시 "잘못된 첨부 파일"로 예외를 던집니다.

model.class.skip_callbacks do 
    model.save 
    end 

가능합니까? 감사!

답변

3

람다로 지정된 skip_callback을 사용하여 특정 콜백을 건너 뛸 수 있습니다. 이를 구체적으로 callback you are trying to avoid과 결합하면 원하는 컨트롤을 얻을 수 있습니다.

class Attachment 
    mount_uploader :attachment, AttachmentUploader 

    skip_callback :save, :after, :store_attachment!, if: :skip_storage? 

    private 

    def skip_storage? 
    # some skipping logic 
    end 
end 
+0

답변 해 주셔서 감사합니다. – Luccas