Ruby on rails 如何清除应用程序中的死掉carrierwave条目?
在我的应用程序中,有许多带有carrierwave上传器的条目,其中上传的文件已消失。我想在rake任务中解决这个问题,但我无法将这些上传程序设置为nil或删除它们。典型的会议如下: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"
[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
我知道这并不理想,所以出于好奇,我还是欢迎大家提出一个建议,如何以更理智的方式处理这件事