Modificare la lingua dell'interfaccia per molti utenti tramite una query al database?

Mi chiedo se qualcuno possa aiutarmi con una richiesta di supporto, per favore.

Devo aggiornare le preferenze di tutti i nostri utenti che attualmente hanno una lingua dell’interfaccia impostata su English (US) e cambiarle in English (UK).

Esiste una query di esplorazione dati che posso creare per emettere una sorta di query SQL UPDATE con una clausola where per selezionare solo quelli in English (US)?

Per riferimento/approfondimento… abbiamo recentemente dedicato molto tempo all’aggiornamento di tutti i nostri Site texts nella lingua English (UK) e durante i test abbiamo scoperto che chiunque si fosse iscritto alla nostra piattaforma più di un anno fa stava utilizzando come predefinito la vecchia impostazione del sito di English (US), anziché English (UK); circa 15.000 utenti necessitano di un aggiornamento.

1 Mi Piace

Non è possibile eseguire query UPDATE tramite il plugin Data Explorer perché è strettamente di sola lettura.

Per aggiornamenti massivi come questo, utilizzare invece la console Rails:

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

Per ulteriori esempi di aggiornamento delle preferenze utente in blocco, fare riferimento a:

1 Mi Piace

Se eseguo questo in Data Explorer:

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

Ottengo:

locale user_count
en_GB 19479
en 16014

Devo AGGIORNARE i 16.014 utenti en in modo che siano en_GB.

E non ho il coraggio di eseguire una query di aggiornamento sulla produzione :blush:

[quote=“jahan_gagan, post:2, topic:391635”]Non puoi eseguire query UPDATE tramite il plugin Data Explorer perché è strettamente di sola lettura.
[/quote]

Uff :sweat_smile:

Fantastico, grazie! :person_bowing:

Grazie @jahan_gagan

Ho prima eseguito un backup del database :sweat_smile:

Poi ho eseguito questo:

Ha funzionato perfettamente:

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

E la mia query di Data Explorer ora risponde con:

locale user_count
en_GB 35493

Grazie :clap:

1 Mi Piace