0

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

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

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

更新属性

usingu.update_attributes( :avatar => "" )不会删除引用

节省()

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

也没有删除参考

remove_avatar = true

u.remove_avatar = true
u.save

不工作

删除头像!

u.remove_avatar!
u.save

不工作

f.check_box :remove_avatar

不工作

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

你能不能给我任何提示,我可以用它来让它再次工作?它可能很脏,这个错误在我的截止日期前一天出现,我感到非常绝望。提前致谢。

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

4

1 回答 1

3

根据这个线程,您可能可以通过使用update_column而不是来管理它update_attribute,然后(由于我目前不清楚的原因),真正强制重新加载内存中的对象(而不是仅仅调用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

于 2012-11-04T22:18:17.377 回答