删除列时如何删除与列对应的图像

时间:2017-12-11 04:38:30

标签: ruby-on-rails ruby carrierwave

我在我的项目中使用rails 4.2.1,ruby 2.3.0p0和carrierwave(0.11.0)。目前我有一个带有图像列的模型产品。现在,我想为同一产品保存多个图像。所以我创建了一个新的模型ProductImage并使用了以下代码

Product.all.each do |prdct|
  if prdct.image.present?
    @photo = prdct.product_images.create!(image: prdct.image)
    prdct.remove_image!
  end
end
remove_column :products, :image

但是产品/图像文件夹中保存的图像不会被删除。如何在ProductImage模型

下移动图像后删除图像

1 个答案:

答案 0 :(得分:1)

prdct.remove_image!之后,您必须保存(prdct.save)对象,以便将其删除。

如果您想删除该文件夹,您还必须执行以下操作:

def remove_image_directory
 FileUtils.remove_dir("#{Rails.root}/path/to/folder/", force: true)
end

删除图像后调用此方法。

来自文档: https://github.com/carrierwaveuploader/carrierwave#removing-uploaded-files