我正在使用AWS https://github.com/jnicklas/carrierwave将我的应用文件上传到亚马逊。我有一个带有图像列的员工模型(将其视为员工个人资料图片),其上载了一个上传器:
class Employee < ActiveRecord::Base
mount_uploader :image, ProfileImageUploader
...
end
每当员工更新其个人资料图片时,我希望删除之前的个人资料。为了做到这一点,我有以下内容:在我的Employee模型中的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
这成功删除了以前的文件。但我也在处理上传的图片。在我的Uploder中,我有以下内容:
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 :(得分:0)
问题在于after_update
回调。保存对象后调用它,从而删除新附加的文件。您需要在保存对象之前调用@employee.remove_image
。