我们有一个“不适当”分类,版主可以将被标记的帖子移入其中,这样即使这些帖子不适合在我们的公共论坛上讨论,仍然可以进行交流。我们显然不希望该分类被包含在摘要邮件中,并且已在站点设置中将其屏蔽:

然而,最近的一封摘要邮件中却包含了一个来自该分类的主题。我在设置中取消选中并重新选中该选项,发现日志中出现了变更:
14 是“不适当”分类的 ID。之前的分类 2(可能是“站点反馈”)早在很久以前就被删除了,但似乎仍被包含在屏蔽分类列表中。这是否是一个导致该列表无法按预期工作的漏洞?
我们有一个“不适当”分类,版主可以将被标记的帖子移入其中,这样即使这些帖子不适合在我们的公共论坛上讨论,仍然可以进行交流。我们显然不希望该分类被包含在摘要邮件中,并且已在站点设置中将其屏蔽:

然而,最近的一封摘要邮件中却包含了一个来自该分类的主题。我在设置中取消选中并重新选中该选项,发现日志中出现了变更:
14 是“不适当”分类的 ID。之前的分类 2(可能是“站点反馈”)早在很久以前就被删除了,但似乎仍被包含在屏蔽分类列表中。这是否是一个导致该列表无法按预期工作的漏洞?
刚查看了摘要预览,类别实际上仍然包含在内。
事实上,对于任何我选择的类别,隐藏功能都无法生效。
是的,我刚刚在我的本地开发站点上测试了这一点,发现了同样的问题。我认为问题出在这里使用的逻辑:
将该行改为 topics = topics.where("topics.category_id NOT IN (?)", remove_category_ids) 似乎解决了已添加到 digest_suppress_categories 设置中的分类的问题,但还需要添加一些处理静音分类的逻辑。也许可以这样:
topics = topics.where("topics.category_id NOT IN (?)", remove_category_ids).where("topic_users.notification_level != (?)", TopicUser.notification_levels[:muted])
我认为问题在于目标用户已经访问过该主题,并且为该用户创建了 “TopicUser” 模型记录。因此,该主题通过了上述检查是否已取消静音的条件。在这种情况下,下面的 PR 应该可以解决此问题。