Abbiamo una categoria “Inappropriato” dove i moderatori possono spostare i post segnalati, in modo che possano comunque essere discussi anche se non adatti al nostro forum pubblico. Ovviamente non vogliamo che questa categoria sia inclusa nelle email di riepilogo e l’abbiamo esclusa nelle impostazioni del sito:
Tuttavia, un argomento di questa categoria è stato incluso nel nostro recente riepilogo. Ho deselezionato e selezionato nuovamente l’opzione nelle Impostazioni e ho notato un cambiamento nel registro:
14 è l’ID della categoria Inappropriato. La categoria Precedente2 (probabilmente “Feedback sul sito”) è stata eliminata parecchio tempo fa, ma apparentemente era ancora inclusa nell’elenco delle categorie escluse. Potrebbe trattarsi di un bug che ha impedito all’elenco di funzionare come previsto?
Sì, ho appena testato questo sul mio sito di sviluppo locale e riscontro la stessa cosa. Penso che il problema risieda nella logica utilizzata qui:
Modificando quella riga in topics = topics.where("topics.category_id NOT IN (?)", remove_category_ids) sembra risolvere il problema con le categorie aggiunte all’impostazione digest_suppress_categories, ma sarà necessario aggiungere una logica per gestire le categorie silenziate. Forse qualcosa del genere:
topics = topics.where("topics.category_id NOT IN (?)", remove_category_ids).where("topic_users.notification_level != (?)", TopicUser.notification_levels[:muted])
Penso che il problema sia che l’utente di destinazione ha già visitato quell’argomento e per quell’utente è stato creato un record del modello TopicUser. In tal modo, quell’argomento supera la condizione sopra riportata in cui verifichiamo se è disattivato o meno. In questo caso, la PR sottostante dovrebbe risolvere il problema.