我认为 post_uploads 表已不存在。现在是 uploads 和 upload_references。如果你正在尝试使用旧方法,可能需要更新该旧代码片段以考虑这一点。
你是如何删除这些帖子的?只是在 UI 中软删除吗?我认为清理孤立图片的设置(clean orphan uploads grace period hours)不考虑它们是否被软删除,只关心图片是否仍在帖子的最新版本中:
我认为你可以通过 rails 控制台选择所有帖子,并使用 PostDestroyer 来硬删除它们,然后在下次 Jobs::CleanUpUploads 运行(或手动触发)时,上传文件将被清理。
例如,如果它是一个完整的类别,我认为你可以使用类似这样的方法:
category = Category.where(id: CATEGORY_ID).pluck(:id)
topic = Topic.where(category_id: category).pluck(:id)
topic.each do |t|
Post.where(topic_id: t).find_each do |p|
PostDestroyer.new(Discourse.system_user, p).destroy
p.destroy!
end
end
我认为这个主题也有一些讨论,你可能会觉得有用 Delete deleted-posts permanently in bulk? - #57 by Simon_Manning
我将添加通常的警告,即在 rails 控制台中进行更改之前进行备份,以防万一。锋利刀具警报。
(只是 FYI,但 Jobs::DirectoryRefreshDaily 和 Jobs::DirectoryRefreshOlder 是填充 用户目录 的作业,与此无关)