Die Anzeigesprache für viele Benutzer per Datenbankabfrage ändern?

Ich frage mich, ob mir jemand bei einer Supportanfrage helfen könnte.

Ich muss die Einstellungen aller unserer Benutzer aktualisieren, die derzeit als Anzeigesprache English (US) eingestellt haben, und sie auf English (UK) umstellen.

Gibt es eine Data Explorer-Abfrage, die ich erstellen kann, um eine Art SQL UPDATE-Abfrage mit einer WHERE-Klausel zu erstellen, die nur diejenigen mit Englisch (US) erfasst?

Zur Referenz/Einsicht… wir haben kürzlich viel Zeit damit verbracht, alle unsere Site texts (Seitentexte) für die Sprache Englisch (UK) zu aktualisieren, und beim Testen haben wir festgestellt, dass jeder, der sich vor über einem Jahr auf unserer Plattform angemeldet hat, standardmäßig auf die alte Standard-Seiteneinstellung Englisch (US) anstelle von Englisch (UK) zurückfiel. Etwa 15.000 Benutzer müssen aktualisiert werden.

1 „Gefällt mir“

Sie können keine UPDATE-Abfragen über das Data Explorer-Plugin ausführen, da es streng lesbar ist.

Für Massenaktualisierungen wie diese verwenden Sie stattdessen die Rails-Konsole:

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

Weitere Beispiele zum Massenaktualisieren von Benutzereinstellungen finden Sie unter:

1 „Gefällt mir“

Wenn ich dies im Data Explorer ausführe:

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

erhalte ich:

locale user_count
en_GB 19479
en 16014

Ich muss die 16.014 en-Benutzer auf en_GB aktualisieren.

Und ich bin nicht mutig genug, eine Update-Abfrage auf der Produktionsumgebung auszuführen :blush:

Puh :sweat_smile:

Fantastisch, vielen Dank! :person_bowing:

Danke @jahan_gagan

Ich habe zuerst ein DB-Backup gemacht :sweat_smile:

Dann habe ich dies ausgeführt:

Es hat perfekt funktioniert:

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

Und meine Data Explorer-Abfrage antwortet nun mit:

locale user_count
en_GB 35493

Vielen Dank :clap:

1 „Gefällt mir“