我使用了carrierwave。 最近我想出了如何使用recreate_versions重新创建其他视觉! 像这样的东西
Model.all.each do |model|
model.image.recreate_versions!
end
但我意识到这种方法只是创建新版本,它不会删除以前版本的图像。
是否有删除版本不存在的图像的方法?
答案 0 :(得分:0)
您可以使用回调:
我猜安装的对象是Image。所以你可以做到以下几点:
after_update :remove_prev_version
def remove_prev_version
@model.remove_image
end
请注意,您需要在before
而非after
上进行操作,因为您希望删除旧图片。
答案 1 :(得分:0)
内部,CarrierWave使用方法remove_versions!
,但它是私有的。
但是很容易实现:
Model.all.each do |model|
model.image.versions.each { |name, v| v.remove! }
end
如果愿意,可以按名称(符号)过滤版本。
除非直接使用文件系统,否则无法删除没有(较长)相关版本的文件。