2012-03-16 13 views
3

AWS3でhttps://github.com/jnicklas/carrierwaveを使用してアプリケーションファイルをAmazonにアップロードしています。従業員がそのプロフィールの写真を更新するたびに、私は以前のものにしたいCarrierwaveを以前にアップロードしたファイルを削除すると、新しいファイル処理が中止されます

class Employee < ActiveRecord::Base 

    mount_uploader :image, ProfileImageUploader 

    ... 

end 

:私はそれにアップローダーを搭載した画像列(従業員のプロフィール画像と考える)と従業員のモデルを持っています削除される。これが成功し、以前のファイルを削除します

class Employee < ActiveRecord::Base 

    ... 

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

    def remove_changed_image 
    self.image_was.remove! 
    end 

end 

:私の従業員モデルのafter_updateコールバック:これを行うためには、私は次のように持っています。しかし、私はアップロードされた写真も処理しています。私のアッププラダーでは、次のようなことがあります。

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 

問題は、新しいファイルがまったく処理されていないことです。 1つのバージョン(未処理のもの)のみがアップロードされますが、前のイメージを削除しないと、すべてが正常に動作します(多くのバージョンがアップロードされます)。

助けが必要ですか?ありがとう!

答えて

0

問題はafter_updateコールバックにあります。これは、オブジェクトが保存された後に呼び出され、新しく添付されたファイルを削除します。オブジェクトを保存する前に@employee.remove_imageに電話する必要があります。

関連する問題