大量关闭比x更旧的现有主题?

您好,

我已将论坛从 XenForo 迁移到 Discourse,现在有很多旧帖子我想关闭。有没有办法说“关闭所有比 x 个月大的主题”?我已经设置了类别中的此选项,但它仅对新主题有效。

2 个赞

您可以在“类别设置”中使用此设置:

我不确定这是否会追溯性地关闭某些内容,但值得一试。

我的另一个想法是进行一些高级筛选并设置一个“之前”日期:

然后,您可以对出现的帖子执行批量操作。

4 个赞

您可以通过以下链接批量关闭主题:Performing bulk actions as a moderator
但根据您想关闭的主题数量,Administrative Bulk Operations 可能是更好的选择。

7 个赞

是的,会有类似的东西链接,我该如何将其缩小到一个类别?

2 个赞

您可以找到类别 ID,然后将其作为命令中的附加条件。例如,关闭“general”类别中早于 9 月 24 日创建的所有未关闭的主题:

cat_id = Category.find_by_slug('general').id
Topic.where(closed: false).where("created_at < '2024-09-24'").where(category_id: cat_id).find_each do |topic|
  topic.update_status('closed', true, Discourse.system_user)
end

这类操作总是让我有点紧张。请务必在运行它们之前创建数据库备份,以防万一出现问题。运行某种初步检查以确保您正在操作正确的数据也可能是一个好主意。一种方法是返回操作将执行的主题的 count。例如:

Topic.where(closed: false).where("created_at < '2024-09-24'").where(category_id: cat_id).count
4 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.