Carrierwave在对象销毁完成后删除文件:
after_commit :remove_avatar! :on => :destroy
https://github.com/carrierwaveuploader/carrierwave
我有一个删除文件的工人。如果其中一个工作人员在从S3删除文件时超时,我就会失去对S3上文件的跟踪,而我的存储桶变得一团糟(因为我的对象已安装文件已从我的数据库中消失)。
我应该如何处理?
在remove_avatar!
之前直接致电object.destroy
,然后skip_callback?
是否安全?
答案 0 :(得分:7)
class User < ActiveRecord::Base
mount_uploader :avatar, AvatarUploader
before_destroy :clean_s3
private
def clean_s3
avatar.remove!
avatar.thumb.remove! # if you have thumb version or any other version
rescue Excon::Errors::Error => error
puts "Something gone wrong"
false
end
end