Carrierwave – 仅在从存储中删除已装入的文件后销毁对象

Carrierwave在对象销毁完成后删除文件:

after_commit :remove_avatar! :on => :destroy 

https://github.com/carrierwaveuploader/carrierwave

我有一个删除文件的工人。 如果其中一个工作人员在从S3删除文件时超时,我将失去对S3上文件的跟踪,并且我的存储桶变得一团糟(因为我的对象已安装文件已从我的数据库中消失)。

我该怎么处理? 直接调用remove_avatar! 在我的object.destroy然后skip_callback? 安全吗?

 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