在Rails 6中默认清除blobs。

问题描述 投票:0回答:1

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

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

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

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

ruby-on-rails rails-activestorage
1个回答
0
投票

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

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

config.excluded_models = %w{ ActiveStorage::Attachment ActiveStorage::Blob }
© www.soinside.com 2019 - 2024. All rights reserved.