このガイドでは、全ユーザーまたは一部のユーザーに対してユーザー設定を編集する方法について説明します。
必要なユーザーレベル: システム管理者
コンソールアクセスが必要です。
全ユーザーまたは大規模なユーザーサブセットに対してユーザー設定を更新する必要がある場合は、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: なし
詳細については、メールでの以前の返信の制御を参照してください。
設定名の特定
ユーザー設定名と利用可能なオプションを特定するには:
- データエクスプローラープラグインを使用して
user_optionsテーブルを調べます。 - Discourse GitHubリポジトリを検索します。
たとえば、「トピックで投稿するときにトピックをどう設定するか」に関連する設定を調整するには、notification_level_when_replyingというユーザーオプションを変更する必要があります。
また、Dockerを設定してpsqlを公開し、PGadminを利用して管理を容易にすることもできます。