在Rails 6中默认清除blobs。

移除一个 活动存储 对象并没有清除blob,而是从数据库中删除了记录,但文件仍然存在。它删除了数据库中的记录,但文件仍然存在。我们需要手动调用 purgepurge_later 以便永久删除该文件。

这让我很意外,为什么要删除引用而保留文件?

有没有办法改变默认值,告诉Rails在记录被删除时总是清除blobfile?

或者,我可以手动检查是否有附件被删除,并在 after_save 钩子,或者用一个cronjob来定期删除所有孤儿文件。什么是最合适的方法?

解决方案:

找到了,我正在使用Rails 6中的purge_later来清除blob。我使用的是 公寓 gem,并且忘记了排除ActiveStorage模型。Apartment gem使用数据库视图,所以它将从数据库中删除引用,但我猜测 purge_later 不在同一数据库范围内运行。

不包括在 config/initializers/apartment.rb 做到了这一点。

config.excluded_models = %w{ ActiveStorage::Attachment ActiveStorage::Blob }

给TA打赏
共{{data.count}}人
人已打赏
解决方案

Shader在我的2D游戏中不能正常工作。

2022-4-20 9:00:10

解决方案

有什么方法可以提取Map的值吗?

2022-4-20 9:00:12

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索