Wir haben eine Kategorie „Unangemessen", in die Moderatoren markierte Beiträge verschieben können, damit sie dennoch diskutiert werden können, auch wenn sie nicht für unser öffentliches Forum geeignet sind. Selbstverständlich möchten wir nicht, dass diese Kategorie in den Zusammenfassungs-E-Mails enthalten ist, und sie wurde in den Site-Einstellungen unterdrückt:
Dennoch wurde in unserer letzten Zusammenfassung ein Thema aus dieser Kategorie enthalten. Ich habe es in den Einstellungen einmal ab- und wieder angehakt und dabei eine Änderung im Protokoll festgestellt:
Die 14 ist die ID von „Unangemessen". Die vorherige Kategorie 2 (wahrscheinlich „Site-Feedback") wurde bereits vor geraumer Zeit gelöscht, scheint aber dennoch in der Liste der unterdrückten Kategorien enthalten gewesen zu sein. Könnte dies ein Fehler sein, der verhindert hat, dass die Liste wie erwartet funktioniert?
Ja, ich habe das gerade auf meiner lokalen Entwicklungsumgebung getestet und stelle dasselbe fest. Ich denke, das Problem liegt in der Logik, die hier verwendet wird:
Wenn man diese Zeile in topics = topics.where("topics.category_id NOT IN (?)", remove_category_ids) ändert, scheint das Problem mit den Kategorien, die in der Einstellung digest_suppress_categories hinzugefügt wurden, behoben zu sein. Allerdings muss noch eine Logik für die Behandlung von stummgeschalteten Kategorien hinzugefügt werden. Vielleicht so etwas wie:
topics = topics.where("topics.category_id NOT IN (?)", remove_category_ids).where("topic_users.notification_level != (?)", TopicUser.notification_levels[:muted])
Ich denke, das Problem liegt darin, dass der Zielpnutzer dieses Thema bereits besucht hat und dafür ein Datensatz des Modells TopicUser angelegt wurde. Dadurch wird das Thema die oben genannte Bedingung erfüllen, bei der geprüft wird, ob es stummgeschaltet ist oder nicht. In diesem Fall sollte der folgende PR dieses Problem beheben.