Richie
(Richie Rich)
2025 年 12 月 18 日午前 7:42
1
サポートリクエストについて、どなたかお手伝いいただけないでしょうか。
現在インターフェース言語が English (US) になっているすべてのユーザーの設定を更新し、代わりに English (UK) を使用するように変更する必要があります。
英語 (US) のユーザーのみを対象とする WHERE 句を指定した SQL UPDATE クエリを発行できるデータエクスプローラークエリを作成できますか?
ご参考/ご参考までに… 最近、英語 (UK) 言語のすべての Site texts の更新に多くの時間を費やしましたが、テスト中に、1年以上前にプラットフォームにサインアップしたユーザーは、古いデフォルトのサイト設定である英語 (US) にデフォルト設定されており、英語 (UK) ではないことがわかりました。約15,000人のユーザーを更新する必要があります。
Data Explorer プラグインからは、読み取り専用であるためUPDATEクエリを実行することはできません。
このような一括更新の場合は、代わりにRailsコンソールを使用してください。
User.where(locale: 'en').update_all(locale: 'en_GB')
ユーザー設定の一括更新のその他の例については、以下を参照してください。
このガイドでは、Discourse で全ユーザーまたは特定のユーザーグループのユーザー設定を編集する方法について説明します。
必要なユーザーレベル:システム管理者
コンソールへのアクセスが必要です。
全ユーザーまたは大規模なユーザーグループのユーザー設定を更新する必要がある場合は、Rails コンソールを使用して行うことができます。
概要
このガイドでは、以下の内容について学習します:
バルク変更を行うための Rails コンソールへのアクセス方法
ユーザー設定の変更例
設定名の特定方法
Rails コンソールへのアクセス
Discourse 環境で Rails コンソールに入るには、以下のコマンドを実行します:
./launcher enter app
rails c
その後、更新したいユーザーのセットを選択するコマンドを実行します。
ユーザー設定の変更例
以下は、様々なユーザー設定を更新するためのコマンド例です:
非アクティブユーザーの最終ログイン日を設定する
一度も…
Richie
(Richie Rich)
2025 年 12 月 18 日午前 8:54
3
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クエリを実行する勇気がありません
Richie
(Richie Rich)
2025 年 12 月 18 日午前 9:04
5
@jahan_gagan さん、ありがとうございます。
まずDBのバックアップを取りました
その後、これを実行しました。
完璧に動作しました。
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
ありがとうございます