Modifier une préférence utilisateur pour tous ou un sous-ensemble d'utilisateurs

:bookmark: Ce guide explique comment modifier une préférence utilisateur pour tous les utilisateurs ou un sous-ensemble d’utilisateurs dans Discourse.

:person_raising_hand: Niveau d’utilisateur requis : Administrateur système

:warning: L’accès à la console est requis.

Si vous devez mettre à jour la préférence utilisateur pour tous vos utilisateurs ou un grand sous-ensemble d’utilisateurs, vous pouvez le faire via la console Rails.

Résumé

Dans ce guide, vous apprendrez :

  • Comment accéder à la console Rails pour effectuer des modifications en masse
  • Des exemples de modification des préférences utilisateur
  • Comment identifier les noms des paramètres

Accès à la console Rails

Pour entrer dans la console Rails de votre installation Discourse, exécutez les commandes suivantes :

./launcher enter app
rails c

Ensuite, exécutez une commande qui sélectionne l’ensemble des utilisateurs que vous souhaitez mettre à jour.

Exemples de modification des préférences utilisateur

Voici des exemples de commandes pour mettre à jour diverses préférences utilisateur :

Définir la dernière date de connexion pour les utilisateurs inactifs

Définir la dernière date de connexion pour les utilisateurs qui ne se sont jamais connectés.

User.where("last_seen_at IS NULL").update_all(last_seen_at: 1.week.ago)

Désactiver le mode liste de diffusion pour tous les utilisateurs

Revenir au paramètre par défaut pour empêcher les utilisateurs de recevoir des e-mails pour chaque nouvelle publication.

UserOption.update_all(mailing_list_mode: false)

Définir le niveau d’e-mail sur “uniquement en absence” pour tous les utilisateurs

Revenir aux paramètres par défaut pour empêcher les notifications par e-mail lorsque les utilisateurs sont actifs sur le site.

UserOption.update_all(email_level: 1)

email_level peut avoir les valeurs :

  • 0 : toujours (envoyer des e-mails même lorsque l’utilisateur est actif)
  • 1 : uniquement en absence (par défaut)
  • 2 : jamais

Activer le chat pour tous les membres du groupe bêta

beta_group = Group.find_by(name: "beta")
beta_group.users.each do |user|
  UserOption.where(user_id: user.id).update_all(chat_enabled: true)
end

Configurer les notifications par e-mail pour exclure les réponses précédentes

Définir la préférence pour exclure les réponses précédentes dans les notifications par e-mail.

UserOption.update_all(email_previous_replies: 0)

email_previous_replies peut avoir les valeurs :

  • 0 : toujours
  • 1 : sauf si déjà envoyé par e-mail
  • 2 : jamais

Pour plus d’informations, consultez contrôle des réponses précédentes dans les e-mails.

Identification du nom d’un paramètre

Pour déterminer le nom du paramètre utilisateur et les options disponibles :

  • Utilisez le plugin Data Explorer pour inspecter la table user_options.
  • Recherchez dans le dépôt GitHub de Discourse.

Par exemple, pour ajuster le paramètre lié à “Lorsque je publie dans un sujet, définir ce sujet sur”, vous devez modifier l’option utilisateur notification_level_when_replying.

Consultez le paramètre pertinent pour surveillance.

Vous pouvez également configurer Docker pour exposer psql et utiliser PGadmin pour une gestion plus facile.

39 « J'aime »