このガイドでは、Discourse で全ユーザーまたは特定のユーザーグループのユーザー設定を編集する方法について説明します。
必要なユーザーレベル:システム管理者
コンソールへのアクセスが必要です。
全ユーザーまたは大規模なユーザーグループのユーザー設定を更新する必要がある場合は、Rails コンソールを使用して行うことができます。
概要
このガイドでは、以下の内容について学習します:
- バルク変更を行うための Rails コンソールへのアクセス方法
- ユーザー設定の変更例
- 設定名の特定方法
Rails コンソールへのアクセス
Discourse 環境で Rails コンソールに入るには、以下のコマンドを実行します:
./launcher enter app
rails c
その後、更新したいユーザーのセットを選択するコマンドを実行します。
ユーザー設定の変更例
以下は、様々なユーザー設定を更新するためのコマンド例です:
非アクティブユーザーの最終ログイン日を設定する
一度もログインしたことがないユーザーの最終ログイン日を設定します。
User.where("last_seen_at IS NULL").update_all(last_seen_at: 1.week.ago)
全ユーザーのメーリングリストモードを無効化する
ユーザーをデフォルトに戻し、新しい投稿ごとにメールを受信しないようにします。
UserOption.update_all(mailing_list_mode: false)
全ユーザーのメール通知レベルを「離席時のみ」に設定する
ユーザーがサイトでアクティブな状態のときにメール通知を受信しないように、デフォルト設定に戻します。
UserOption.update_all(email_level: 1)
email_level の値:
- 0: 常に(ユーザーがアクティブでもメールを送信)
- 1: 離席時のみ(デフォルト)
- 2: しない
ベータグループメンバー全員にチャットを有効化する
beta_group = Group.find_by(name: "beta")
beta_group.users.each do |user|
UserOption.where(user_id: user.id).update_all(chat_enabled: true)
end
メール通知から過去の返信を除外するように設定する
メール通知で過去の返信を除外するよう設定します。
UserOption.update_all(email_previous_replies: 0)
email_previous_replies の値:
- 0: 常に
- 1: 以前にメールを送信していない場合のみ
- 2: しない
詳細については、メール内の過去の返信の制御を参照してください。
設定名の特定
ユーザー設定名と利用可能なオプションを確認するには:
- data explorer プラグインを使用して
user_optionsテーブルを検査します。 - Discourse の GitHub リポジトリを検索します。
例えば、「トピックに投稿したとき、そのトピックを次のように設定する」という設定を調整するには、notification_level_when_replying というユーザーオプションを変更する必要があります。
また、Docker を構成して psql を公開し、PGadmin を使用することで、より容易に管理することもできます。