Редактирование пользовательских настроек для всех или для группы пользователей

:bookmark: В этом руководстве объясняется, как изменить пользовательские настройки для всех пользователей или для их подмножества в Discourse.

:person_raising_hand: Требуемый уровень доступа: Системный администратор

:warning: Требуется доступ к консоли.

Если вам необходимо обновить пользовательские настройки для всех ваших пользователей или для их большой группы, вы можете сделать это через консоль Rails.

Краткое содержание

В этом руководстве вы узнаете:

  • Как получить доступ к консоли Rails для внесения массовых изменений
  • Примеры изменения пользовательских настроек
  • Как определить имена настроек

Доступ к консоли Rails

Чтобы войти в консоль Rails в вашей установке Discourse, выполните следующие команды:

./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 лайков