2012-03-16 2 views
3

https://github.com/jnicklas/carrierwave을 AWS3과 함께 사용하여 Amazon에 앱 파일을 업로드하고 있습니다. 나는 그것을 장착 업 로더있는 이미지 열 (직원 프로필 사진으로 생각)을 가진 직원 모델이있어 : 직원이 자신의 프로필 사진을 업데이트 할 때마다이전에 업로드 한 파일 Carrierwave를 제거하면 새로운 파일 처리가 엉망입니다.

class Employee < ActiveRecord::Base 

    mount_uploader :image, ProfileImageUploader 

    ... 

end 

을, 나는에 이전을 원하는 삭제할 수 있습니다. 내 직원 모델에서 after_update 콜백 :이 작업을 수행하기 위해, 나는 다음있어

class Employee < ActiveRecord::Base 

    ... 

    after_update :remove_changed_image, :if => 'self.image_changed?' 

    def remove_changed_image 
    self.image_was.remove! 
    end 

end 

이 성공적으로 이전 파일을 삭제합니다. 그러나 나는 또한 업로드 된 사진을 처리하고 있습니다. 내 업로더에는 다음과 같은 것들이 있습니다 :

class ProfileImageUploader < CarrierWave::Uploader::Base 

    include CarrierWave::MiniMagick 

    # Create different versions of your uploaded files: 
    version :thumb do 
    process :resize_to_limit => [300, 300] 
    end 

    ... 

end 

문제는 새로운 파일이 전혀 처리되지 않는 것입니다. 하나의 버전 (처리되지 않은 버전) 만 업로드되고, 이전 이미지를 제거하지 않으면 모든 것이 제대로 작동합니다 (많은 버전이 업로드됩니다).

어떤 도움이 필요합니까? 감사!

답변

0

문제는 after_update 콜백입니다. 객체가 저장된 후에 호출되어 새로 첨부 된 파일을 삭제합니다. 개체를 저장하기 전에 @employee.remove_image으로 전화해야합니다.