我正在使用Cloudinary和CarrierWave来处理我的图片上传。 This is the guide我正在关注。我有一个Collection
模型,cover
列type: string
:
collection.rb
class Collection < ActiveRecord::Base
has_many :posts
belongs_to :user
mount_uploader :cover, ImageUploader
end
以下是我的 image_uploader.rb :
class ImageUploader < CarrierWave::Uploader::Base
include Cloudinary::CarrierWave
include CarrierWave::MiniMagick
version :default do
cloudinary_transformation quality: "auto", width:640, crop: "scale", fetch_format: "auto"
end
end
我正在使用 simple_form 作为上传表单:
= simple_form_for @collection do |f|
= f.input :cover, label: false, include_blank: true, input_html: { onChange: 'window.loadFile(event)' }
现在,上传工作正常。对于上传的每张图片,该特定cover
的{{1}}列都会更改为已上传图片的网址。没问题。但是,我似乎找不到删除上传图片的方法。当然,我可以将上传的图片替换为其他图片,但我无法 删除 ,以便Collection
列再次成为cover
。我已经尝试从上传表单和rails控制台将属性更新为nil
或nil
,但都不起作用。我也尝试了CarrierWave guide中提到的''
,这也没有用。有人可以帮忙吗?
答案 0 :(得分:1)
您可以在Carrierwave对象的file
属性上调用delete方法,例如:
@collection.cover.file.delete
假设delete_remote
方法设置为true(默认值),它将从模型中删除实例,并从Cloudinary存储中删除。
请参阅:https://github.com/cloudinary/cloudinary_gem/blob/master/lib/cloudinary/carrier_wave.rb#L172