Changer la langue de l'interface pour de nombreux utilisateurs via une requête SQL ?

Je me demande si quelqu’un pourrait m’aider avec une demande de support, s’il vous plaît.

Je dois mettre à jour les préférences de tous nos utilisateurs qui ont actuellement une langue d’interface de English (US) et les changer pour utiliser English (UK) à la place.

Existe-t-il une requête d’explorateur de données que je pourrais créer pour émettre une sorte de requête SQL UPDATE avec une clause where pour cibler uniquement ceux en English (US) ?

Pour référence / information… nous avons récemment passé beaucoup de temps à mettre à jour tous nos Site texts (Textes du site) pour la langue English (UK) et lors des tests, nous avons découvert que toute personne inscrite sur notre plateforme il y a plus d’un an utilisait par défaut le paramètre de site par défaut précédent, English (US), au lieu de English (UK), environ 15 000 utilisateurs doivent être mis à jour.

1 « J'aime »

Vous ne pouvez pas exécuter de requêtes UPDATE via le plugin Data Explorer car il est strictement en lecture seule.

Pour les mises à jour en masse comme celle-ci, utilisez plutôt la console Rails :

User.where(locale: 'en').update_all(locale: 'en_GB')

Pour plus d’exemples de mise à jour des préférences utilisateur en masse, consultez :

1 « J'aime »

Si j’exécute ceci dans l’Explorateur de données :

SELECT
  u.locale,
  COUNT(*) AS user_count
FROM users u
WHERE u.active = TRUE
  AND u.locale IN ('en', 'en_GB')
GROUP BY u.locale
ORDER BY user_count DESC, u.locale

J’obtiens :

locale user_count
en_GB 19479
en 16014

Je dois mettre à jour les 16 014 utilisateurs en pour qu’ils soient en_GB.

Et je n’ose pas exécuter une requête de mise à jour sur la production :blush:

[quote=“jahan_gagan, post:2, topic:391635”]Vous ne pouvez pas exécuter de requêtes UPDATE via le plugin Data Explorer car il est strictement en lecture seule.
[/quote]

Ouf :sweat_smile:

Fantastique, merci ! :person_bowing:

Merci @jahan_gagan

J’ai d’abord fait une sauvegarde de la base de données :sweat_smile:

J’ai ensuite exécuté ceci :

Cela a parfaitement fonctionné :

Loading production environment (Rails 8.0.4)
discourse(prod)=> User.where(locale: 'en').update_all(locale: 'en_GB')
=> 16016

Et ma requête Data Explorer répond maintenant par :

locale user_count
en_GB 35493

Merci :clap:

1 « J'aime »