gjsman
(Gabriel Sieben)
1
您好,
我们面向高中生的 Discourse 站点非常成功。过于成功了。自 2021 年 1 月启动以来,我们在过去两年中已发布了 230 万个帖子和 290 万个点赞。
我们希望稍微清理一下场地,以节省成本,并降低被黑客攻击或类似风险的长期风险。重新开始会很痛苦,但发现将 /print 添加到主题 URL 的末尾即可生成用于 PDF 的 1000 条评论页面,这很有帮助。我们找不到(而且我非常怀疑)是否存在任何干净的方法可以删除,例如,最旧一年份的主题。
有什么想法吗?我们需要重新开始,还是有其他选择?
Gabriel Sieben
2 个赞
Canapin
(Coin-coin le Canapin)
2
您好!很高兴知道 Discourse 在您的项目中效果非常好

只是为了确保我理解正确;您删除帖子的标准仅仅是它的年龄吗?
界面中没有内置功能可以实现这一点,但您可以创建一个并手动触发一个 rails 脚本来删除早于特定日期的帖子。
Topic.where("created_at.....").destroy_all
方括号内是一个 SQL 查询。
1 个赞
gjsman
(Gabriel Sieben)
3
正确,如果这不会导致到处出现断链和上下文混乱。我希望任何引用都不会受到影响。
这会清理上传的文件吗?
1 个赞
Canapin
(Coin-coin le Canapin)
4
引用的内容将保留。
至于指向已删除主题的内部链接,它们将导致“未找到”页面。
是的,上传的文件默认将在 2 天后删除(除非它们在其他地方使用,例如在另一个主题的引用中),请参阅 clean orphan uploads grace period hours 设置。
但请注意,主题和帖子是软删除的。它们被隐藏,但仍存储在数据库中。
我补充一点,我说的可能不完全准确……最好等一个更有经验的用户来回复。 
1 个赞
pfaffman
(Jay Pfaffman)
5
您以后可以做的一件事是开启聊天功能,我猜这占了大部分内容,特别是如果您想删除它的话。这样内容就会自动清理(我认为默认是 90 天,这可能足够了)。
而且,那些旧的内容都不重要吗?如果有些重要,您打算如何保留好的内容?按类别吗?
看起来 Topic.destroy 会调用 PostDestroyer,所以我想销毁这些主题应该能达到您想要的效果。
我建议您在生产服务器上执行此操作之前,先设置一个测试站点进行一些测试。
不过,我可能会考虑创建一组 Discourse 站点,也许每个毕业班一个,这样到时就可以直接关闭它们。您也可以为全校性的内容设置一个单独的站点,并让它们共享一个身份验证服务器(要么是全校性的 Discourse,要么是您学校/学区使用的身份验证服务器)。哦,或者这只是针对高中生,而不是一所高中。所以这个重组可能没有意义。
3 个赞