Подавленная категория включена в дайджест

У нас есть категория «Неуместное», куда модераторы могут перемещать отмеченные посты, чтобы их всё ещё можно было обсуждать, даже если они не подходят для нашего публичного форума. Очевидно, мы не хотим, чтобы эта категория включалась в сводные письма, и она была отключена в настройках сайта:

Screenshot from 2021-09-12 07-39-34

Однако в нашу последнюю сводку попала тема из этой категории. Я снял и снова поставил галочку в настройках и заметил изменение в логе:

14 — это ID категории «Неуместное». Предыдущая категория 2 (вероятно, «Отзывы о сайте») была удалена довольно давно, но, судя по всему, всё ещё присутствовала в списке исключённых категорий. Не является ли это ошибкой, которая мешала списку работать корректно?

3 лайка

Только что проверил предварительный просмотр сводки, и категория на самом деле всё ещё включена.

Более того, отключение не работает ни для одной из выбранных категорий.

Да, я только что протестировал это на своём локальном dev-сайте и столкнулся с той же проблемой. Думаю, дело в логике, которая используется здесь:

Изменение этой строки на 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])
3 лайка

Думаю, проблема в том, что целевой пользователь уже посещал эту тему, и для этого пользователя была создана запись модели TopicUser. Поэтому тема проходит указанное выше условие, где мы проверяем, не отключены ли уведомления. В таком случае исправление должно быть внесено в следующий PR:

3 лайка