Je pense que les étapes ci-dessous ont résolu le problème !
Dans les paramètres du site, j’ai défini la catégorie (31) comme étant à suivre par défaut, de manière rétroactive.
Vérifier :
CategoryUser.where(category_id: 31).pluck(:user_id, :notification_level)
La plupart des utilisateurs ont un notification_level de 3 pour ma catégorie 31. 
Il y a maintenant deux obstacles à l’effet complet de ce changement :
- Les préférences d’e-mail globales de l’utilisateur.
- Les préférences de notification de l’utilisateur pour chaque sujet de la catégorie (31).
Les lignes suivantes modifieront les paramètres personnels de vos utilisateurs. Ne vous disputez pas.
Premièrement, afin de « réactiver » les e-mails des utilisateurs, il faut définir le email_level des utilisateurs à 1 (c’est-à-dire « quand absent ») ou 2 (« toujours ») :
UserOption.update_all(email_level: 1)
Vérifier :
UserOption.group(:email_level).count
J’obtiens quelque chose comme => {1=>X} où X est le nombre d’utilisateurs.
Deuxièmement, le notification_level du sujet a la priorité sur le notification_level de la catégorie (qui a été modifié dans les paramètres du site). Le moyen le plus simple est de supprimer les préférences du sujet. Pour ce faire, il suffit de supprimer les entrées sujet par sujet :
TopicUser.where(topic_id: <numéro_du_sujet>).destroy_all
Vérifier :
TopicUser.where(topic_id: <numéro_du_sujet>).exists?
J’obtiens quelque chose comme => [ ] ce qui signifie qu’aucun utilisateur n’a de préférences de sujet et que le notification_level de la catégorie sera le défaut pour tous les utilisateurs.
N.B. : D’une manière ou d’une autre, certains utilisateurs n’avaient toujours pas de préférences de notification pour la catégorie (31) définies (c’est-à-dire aucune entrée dans la table category_user). Pour s’assurer que leur notification_level est défini, il faut créer une entrée avec la valeur pour notification_level :
User.find_each do |user|
unless CategoryUser.exists?(user_id: user.id, category_id: 31)
CategoryUser.create!(user_id: user.id, category_id: 31, notification_level: 3)
end
end
Vérifier :
CategoryUser.where(category_id: 31).pluck(:id, :notification_level)