如何使用CarrierWave删除上传到Cloudinary的图像? [滑轨]

时间:2017-03-25 05:19:44

标签: ruby-on-rails file-upload carrierwave cloudinary

我正在使用Cloudinary和CarrierWave来处理我的图片上传。 This is the guide我正在关注。我有一个Collection模型,covertype: 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控制台将属性更新为nilnil,但都不起作用。我也尝试了CarrierWave guide中提到的'',这也没有用。有人可以帮忙吗?

1 个答案:

答案 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