无法删除附件

时间:2012-11-04 20:50:56

标签: ruby-on-rails ruby-on-rails-3 carrierwave

看起来这是一个已知问题,但我无法找到任何解决方案,也无法找到任何脏修复工具。问题是我无法删除使用Carrierwave插件上传的附件。

我正在使用一个名为:remove_avatar的特殊表单字段,它应删除头像文件并清除头像列,但它唯一要做的就是删除文件,头像列中的文件引用仍然存在。

我试图以任何可能的方式删除它,但没有运气。

update_attributes方法

使用u.update_attributes( :avatar => "" )并未删除引用

保存()

u = User.find(int)
u.avatar = ""
u.save

也没有删除引用

remove_avatar = true

u.remove_avatar = true
u.save

不工作

remove_avatar!

u.remove_avatar!
u.save

不工作

f.check_box:remove_avatar

不工作

“不工作”是指文件从文件系统中删除,但引用仍然存在。

您可以给我提供任何提示,我可以使用它再次使用吗?它可能是脏的东西,这个错误在我的截止日期前一天显示,我感到非常绝望。提前谢谢。

Ruby:1.8.7
Rails:3.2.6
Carrierwave:来自git repo的主分支

1 个答案:

答案 0 :(得分:3)

根据this thread,您可以使用update_column代替update_attribute来管理此问题,然后(由于我目前尚不清楚的原因),真正强制重新加载-memory对象(而不只是在其上调用reload):

u = User.where('avatar is not null').last # Get a user with an avatar
u.update_column(:avatar, nil) # Use update_column to avoid callbacks
u = User.where(:id => u).first # Force a reload of the object. No, u.reload doesn't work. No, I don't know why.

当我在我的控制台中执行此操作时,u.avatar最终为空白。 我的版本信息,如果这不适合你:Ruby 1.9.3,Rails 3.2.2,PostgreSQL 9.2,CarrierWave 0.5.7