为所有用户或部分用户编辑用户偏好设置

: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 组成员启用聊天功能

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 用户选项。

查看 相关设置 以了解 关注

你还可以配置 Docker 以暴露 psql 并利用 PGadmin 进行更便捷的管理。

39 个赞