主题不断被删除

以下是我的解决方案:

  1. 用户创建主题
  2. 用户删除主题帖子并安排删除(我将 delete_removed_posts_after 站点设置更改为 1
  3. 主题在指定时间后被删除
  4. 工作人员恢复主题并将帖子还原为原始版本(仅执行“恢复”操作会将帖子带回,并显示“作者已撤回主题,除非被标记,否则将在 1 小时后自动删除”的消息)
  5. 主题将在一段时间后再次被删除

发生的情况: 当用户删除自己的主题帖子时,会有一个名为 user_deleted 的属性被设置为 true。有一个名为 DestroyOldDeletionStubs 的后台任务每 30 分钟运行一次。该任务会执行 PostDestroyer.destroy_stubs 函数,该函数会搜索数据库并删除所有 user_deletedtrue 且“删除计时器”已过期的帖子。

问题所在: 当工作人员恢复帖子时,user_deleted 从未被设置为 false,因此下次 DestroyOldDeletionStubs 运行时,该帖子会被再次删除。

解决方案: 我相当确定我们需要在 staff_recovered 函数中添加一些逻辑,将 user_deleted 设置为 falseuser_recovered 已经这样做了)。参考:discourse/lib/post_destroyer.rb at main · discourse/discourse · GitHub

快速修复方法: 恢复主题帖子并获取其帖子 ID,然后进入 Rails 控制台并运行:

Post.find_by_id(POST_ID).update(user_deleted: false)

帖子 ID 可以通过在主题 URL 末尾添加 .json 轻松找到。例如,使用此主题:https://meta.discourse.org/t/topic-keeps-getting-deleted/128013.json。该主题帖子的 ID 是 632362

10 个赞