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人のユーザーを更新する必要があります。
「いいね!」 1
Data Explorerプラグインからは、読み取り専用であるためUPDATEクエリを実行することはできません。
このような一括更新の場合は、代わりにRailsコンソールを使用してください。
User.where(locale: 'en').update_all(locale: 'en_GB')
ユーザー設定の一括更新のその他の例については、以下を参照してください。
This guide explains how to edit a user preference for everyone or a subset of users in Discourse.
Required user level: System Administrator
Console access is required.
If you need to update the user preference for all of your users or a large subset of users, you can do so via the rails console.
Summary
In this guide, you’ll learn:
How to access the Rails console for making bulk changes
Examples of modifying user preferences
How to identify set…
「いいね!」 1
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
ありがとうございます
「いいね!」 1