全ユーザーまたは一部ユーザーのユーザー設定を編集

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

: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: なし

詳細については、メールでの以前の返信の制御を参照してください。

設定名の特定

ユーザー設定名と利用可能なオプションを特定するには:

たとえば、「トピックで投稿するときにトピックをどう設定するか」に関連する設定を調整するには、notification_level_when_replyingというユーザーオプションを変更する必要があります。

関連する設定watchingと比較して確認してください。

また、Dockerを設定してpsqlを公開し、PGadminを利用して管理を容易にすることもできます。

「いいね!」 39