Temos uma categoria “Inadequada” onde os moderadores podem mover posts sinalizados, para que ainda possam ser discutidos, mesmo não sendo adequados para nosso fórum público. Obviamente, não queremos que essa categoria seja incluída nos e-mails de resumo, e ela foi suprimida nas configurações do site:
No entanto, um tópico dessa categoria foi incluído em nosso resumo recente. Desmarquei e marquei novamente a opção nas Configurações e vi que houve uma alteração no log:
O 14 é o ID da categoria Inadequada. A categoria Anterior2 (provavelmente “Feedback do Site”) foi excluída há bastante tempo, mas aparentemente ainda estava incluída na lista de categorias suprimidas. Seria isso um bug que impediu a lista de funcionar conforme o esperado?
Sim, acabei de testar isso no meu site de desenvolvimento local e estou encontrando o mesmo problema. Acredito que a questão esteja na lógica usada aqui:
Alterar essa linha para topics = topics.where("topics.category_id NOT IN (?)", remove_category_ids) parece resolver o problema com as categorias que foram adicionadas à configuração digest_suppress_categories, mas será necessária alguma lógica adicional para lidar com categorias silenciadas. Talvez algo como:
topics = topics.where("topics.category_id NOT IN (?)", remove_category_ids).where("topic_users.notification_level != (?)", TopicUser.notification_levels[:muted])
Acho que o problema é que o usuário-alvo já visitou aquele tópico e um registro do modelo TopicUser foi criado para esse usuário. Assim, esse tópico atende à condição acima, onde verificamos se ele não está silenciado ou não. Nesse caso, o PR abaixo deve corrigir esse problema.