В этом руководстве объясняется, как изменить пользовательские настройки для всех пользователей или для их подмножества в Discourse.
Требуемый уровень доступа: Системный администратор
Требуется доступ к консоли.
Если вам необходимо обновить пользовательские настройки для всех ваших пользователей или для их большой группы, вы можете сделать это через консоль 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 для более удобного управления.