すべてのユーザーまたは特定のユーザーグループのユーザー設定を編集

:bookmark: このガイドでは、Discourse で全ユーザーまたは特定のユーザーグループのユーザー設定を編集する方法について説明します。

:person_raising_hand: 必要なユーザーレベル:システム管理者

:warning: コンソールへのアクセスが必要です。

全ユーザーまたは大規模なユーザーグループのユーザー設定を更新する必要がある場合は、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 を使用することで、より容易に管理することもできます。

「いいね!」 39