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

: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_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 个赞