【发布时间】:2017-01-18 09:30:47
【问题描述】:
我使用载波。 最近我想出了如何使用 recreate_versions 重新创建其他愿景! 像这样的
Model.all.each do |model|
model.image.recreate_versions!
end
但我意识到这个方法只是创建新版本,它不会删除以前版本的图像。
有没有删除版本不存在的图片的方法?
【问题讨论】:
我使用载波。 最近我想出了如何使用 recreate_versions 重新创建其他愿景! 像这样的
Model.all.each do |model|
model.image.recreate_versions!
end
但我意识到这个方法只是创建新版本,它不会删除以前版本的图像。
有没有删除版本不存在的图片的方法?
【问题讨论】:
您可以为此使用回调:
我猜挂载的对象是 Image。因此您可以执行以下操作:
after_update :remove_prev_version
def remove_prev_version
@model.remove_image
end
请注意,您需要在 before 而不是 after 上执行此操作,因为您希望删除旧图像。
【讨论】:
CarrierWave 内部使用方法 remove_versions!,但它是私有的。
但它很容易重新实现:
Model.all.each do |model|
model.image.versions.each { |name, v| v.remove! }
end
如果您愿意,可以按名称(符号)过滤您的版本。
除非您直接使用文件系统,否则无法删除没有(不再)相关版本的文件。
【讨论】: