多数のユーザーのインターフェース言語をデータベースクエリで変更できますか?

サポートリクエストについて、どなたかお手伝いいただけないでしょうか。

現在インターフェース言語が English (US) になっているすべてのユーザーの設定を更新し、代わりに English (UK) を使用するように変更する必要があります。

英語 (US) のユーザーのみを対象とする WHERE 句を指定した SQL UPDATE クエリを発行できるデータエクスプローラークエリを作成できますか?

ご参考/ご参考までに… 最近、英語 (UK) 言語のすべての Site texts の更新に多くの時間を費やしましたが、テスト中に、1年以上前にプラットフォームにサインアップしたユーザーは、古いデフォルトのサイト設定である英語 (US) にデフォルト設定されており、英語 (UK) ではないことがわかりました。約15,000人のユーザーを更新する必要があります。

「いいね!」 1

Data Explorerプラグインからは、読み取り専用であるためUPDATEクエリを実行することはできません。

このような一括更新の場合は、代わりにRailsコンソールを使用してください。

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

ユーザー設定の一括更新のその他の例については、以下を参照してください。

「いいね!」 1

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

次のようになります。

locale user_count
en_GB 19479
en 16014

enの16,014人のユーザーをen_GBにUPDATEする必要があります。

そして、本番環境でUPDATEクエリを実行する勇気がありません :blush:

ふう :sweat_smile:

素晴らしい、ありがとうございます! :person_bowing:

@jahan_gagan さん、ありがとうございます。

まずDBのバックアップを取りました :sweat_smile:

その後、これを実行しました。

完璧に動作しました。

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

そして、データエクスプローラーのクエリは次のように応答します。

locale user_count
en_GB 35493

ありがとうございます :clap:

「いいね!」 1