我正在使用Cloudinary和CarrierWave处理我的图片上传。我遵循的是This is the guide。我有一个Collection
模型的type: string
一个cover
柱:如何使用CarrierWave删除上传到Cloudinary的图像? [Rails]
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)' }
现在,上传工作正常。对于上传的每张图片,该特定Collection
的cover
列将更改为上传图片的网址。那里没有问题。但是,我似乎无法找到一种方法来删除上传的图像。当然,我可以用另一个替换上传的图像,但我不能删除它,以便cover
列再次变成nil
。我尝试将上传表单和导航控制台的属性更新为nil
或''
,但都无效。我也试过@collection.remove_cover!
,如CarrierWave guide中所提到的那样,它也没有工作。有人可以帮忙吗?
当我尝试'@ collection.cover.file'它确实表明了文件,但是当我在'@ collection.cover.file.delete'类型,它返回'=> {”结果“=>”找不到“}'。我也试过'@ collection.cover.file.exists?',并且返回'=> false'。这是为什么发生?我有没有Cloudinary设置错误? – Arif
听起来好像它已经从您的Cloudinary帐户中删除。你注意到了吗?看起来操作成功并且File实例与远程资源一起被删除。如果它在那里,它会在这行代码后被删除。 –