是否可以仅删除版本并保留原始文件?
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :fog # Amazon S3
version :product_thumb, if: :create_thumb? do
process :resize_to_fit => [15, 15]
end
protected
def create_thumb?
model.make_thumbnail
end
end
当我跑步时:
prod = Product.first
prod.remove_image!
prod.save
原始和:product_thumb都会被删除。但我只想删除版本:product_thumb。我查看了API并没有看到任何有用的内容。
prod.remove_product_thumb_image! --> # NoMethodError: undefined method
prod.remove_image(:product_thumb) --> # ArgumentError: wrong number of arguments (1for0)
# one idea was to get the file path of the version and delete it manually
prod.image.url(:product_thumb) --> # path/to/file/product_thumb_test.png
答案 0 :(得分:0)
要删除所有版本,请使用:
prod.image.remove_versions!
要删除特定版本,请使用:
prod.image.versions[:product_thumb].remove!
答案 1 :(得分:-1)
据我所知,删除图像版本没有简短的命令。但是,您可以构建一个可以为您执行此操作的Ruby脚本,即删除相应的文件。
使用这样的脚本:
Product.all.each do |p|
path = File.delete(p.image.product_thumb.current_path)
File.delete(path) if File.exists?(path.to_s)
end
从ImageUploader中删除product_thumb
版本。
就像从未有过图像版本一样。