微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – Rails和paperclip,删除记录但不删除附件

我通常使用rails和paperclip来保存图像.

销毁附件的记录时,附件也会从文件系统中删除.

99%的时间这是正确的操作,但是有一种情况我需要附件保留在系统中,即使删除了db记录.

我想知道是否有人知道如何做到这一点.

我已经尝试在销毁记录之前通过update_attribute将附件字段设置为nil,但update_attribute也删除了该文件.

一种方法是忽略所有回调,但是需要一些其他回调,这似乎有点太多了.任何人都知道更好的方法……

干杯.

解决方法

您可能想要了解如何在回形针中实现Attachment#assign(在执行object.attachment = new_attachment时调用).
基本上,它进行了一些设置,然后调用Attachment #clear,然后保存新文件.

附件#clear将旧文件放入再次调用save时处理的删除队列中,你想要的只是避免调用clear,你可以通过编写一个新的assign方法来跳过那行或者猴子修补#clear以使其成为无操作.从理论上讲,你可以在想要发生这种情况的实例上修补它,但在我看来,你可能想要为整个项目做这件事.

或者,您可以清除保存处理队列的实例变量.该变量没有访问器,但执行instance_variable_get应该是微不足道的

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐