Tenemos una categoría “Inapropiada” donde los moderadores pueden mover los mensajes marcados, de modo que aún puedan discutirse aunque no sean adecuados para nuestro foro público. Por supuesto, no queremos que esa categoría se incluya en los correos electrónicos de resumen y la habíamos suprimido en la configuración del sitio:
Sin embargo, un tema de esa categoría se incluyó en nuestro resumen reciente. Desmarqué y volví a marcar la opción en Configuración y noté un cambio en el registro:
14 es el ID de “Inapropiada”. La categoría Anterior2 (probablemente “Comentarios sobre el sitio”) había sido eliminada hace bastante tiempo, pero aparentemente seguía incluida en la lista de categorías suprimidas. ¿Podría tratarse de un error que impidió que la lista funcionara como se esperaba?
Sí, acabo de probarlo en mi sitio de desarrollo local y encuentro lo mismo. Creo que el problema radica en la lógica que se utiliza aquí:
Cambiar esa línea a topics = topics.where("topics.category_id NOT IN (?)", remove_category_ids) parece solucionar el problema con las categorías que se han añadido a la configuración digest_suppress_categories, pero será necesario añadir alguna lógica para gestionar las categorías silenciadas. Quizás algo como:
topics = topics.where("topics.category_id NOT IN (?)", remove_category_ids).where("topic_users.notification_level != (?)", TopicUser.notification_levels[:muted])
Creo que el problema es que el usuario objetivo ya ha visitado ese tema y se ha creado un registro del modelo TopicUser para ese usuario. Por lo tanto, ese tema cumple la condición anterior donde verificamos si está silenciado o no. En ese caso, la siguiente PR debería solucionar este problema.