Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何清除应用程序中的死掉carrierwave条目?_Ruby On Rails_Ruby On Rails 3_Carrierwave - Fatal编程技术网

Ruby on rails 如何清除应用程序中的死掉carrierwave条目?

Ruby on rails 如何清除应用程序中的死掉carrierwave条目?,ruby-on-rails,ruby-on-rails-3,carrierwave,Ruby On Rails,Ruby On Rails 3,Carrierwave,在我的应用程序中,有许多带有carrierwave上传器的条目,其中上传的文件已消失。我想在rake任务中解决这个问题,但我无法将这些上传程序设置为nil或删除它们。典型的会议如下: [43] pry(main)> article => #<Product id: 80, name: "Barcelona", ambient_picture: "ambient.jpg", special: false, slug: "barcelona", image: "image.jpg"

在我的应用程序中,有许多带有carrierwave上传器的条目,其中上传的文件已消失。我想在rake任务中解决这个问题,但我无法将这些上传程序设置为nil或删除它们。典型的会议如下:

[43] pry(main)> article
=> #<Product id: 80, name: "Barcelona", ambient_picture: "ambient.jpg", special: false, slug: "barcelona", image: "image.jpg">
[44] pry(main)> article.remove_ambient_picture!
=> nil
[45] pry(main)> article
=> #<Product id: 80, name: "Barcelona", special: false, slug: "barcelona", image: "image.jpg">
[46] pry(main)> article.save
   (0.2ms)  BEGIN
   (0.1ms)  COMMIT
=> true
[43]撬(主)>文章
=> #
[44]撬动(主)>物品。移除环境图片!
=>零
[45]撬(主)>物品
=> #
[46]撬(主)>物品保存
(0.2ms)开始
(0.1ms)提交
=>正确
如此这般令人作呕,似乎什么都帮不上忙。引用remove方法看起来更像是其他回调的中心,因此只有当文件实际存在时,它才可能工作


那么在这种情况下我该怎么办呢?

所以现在我求助于:

    unless article.ambient_picture?
      p "Removing #{article.ambient_picture}"
      sql = ActiveRecord::Base.connection()
      sql.update "UPDATE articles SET ambient_picture=null WHERE id=#{article.id}"
    end
我知道这并不理想,所以出于好奇,我还是欢迎大家提出一个建议,如何以更理智的方式处理这件事