本指南介绍如何将多个用户账户合并为单个 Discourse 账户。内容包括通过 Discourse UI 合并非管理员用户,以及通过控制台合并管理员用户。
所需用户级别:管理员
在 Discourse 中合并用户账户允许您将多个账户合并为一个。此过程在以下几种场景中非常有用:
- 当用户创建了多个账户,可能是由于忘记了之前的注册信息。
- 如果用户使用新的电子邮件地址创建了新账户,而不是更新现有账户。
- 当用户希望将用于不同目的(例如个人、业务或测试)的多个账户整合为一个账户时。
合并非管理员用户
管理员可以直接通过 Discourse UI 合并非管理员用户。
此操作不可逆。源用户账户将在合并后被删除。
合并两个非管理员用户的步骤如下:
- 导航至源用户(您要从中合并的账户)的用户管理页面。
- 滚动到页面底部。
- 点击“合并”按钮。
- 在第一个弹出窗口中,输入目标账户(您要合并到的账户)的用户名,然后点击“转移并删除”。
- 将出现确认对话框。输入显示的确认文本(例如
transfer @source to @target),然后点击“转移并删除”以启动合并。
合并大型账户可能会消耗大量资源,并且根据源用户关联的数据量,可能需要一些时间才能完成处理。
哪些内容会被合并?
合并用户账户时,Discourse 会合并来自 50 多个表的数据,包括:
- 帖子和主题
- 已给予和收到的点赞
- 私信
- 用户个人资料信息
- 用户偏好和设置
- 用户操作和活动(例如书签、主题浏览量)
- 徽章和成就
- 信任级别和组成员资格
- 关联账户(例如社交登录)
如果发生冲突,将保留目标用户的详细信息。如果两个用户都关联了 匿名用户,则属于源用户的那个将会丢失。
合并后,引用源用户的传入链接(例如
https://discourse.example.com/t/some-topic/17/3?u=source_username)将不会与目标用户关联。
关于合并用户与 DiscourseConnect 的重要说明
合并用户账户可能会根据具体实现方式影响 DiscourseConnect(原 SSO):
- 如果 DiscourseConnect 基于电子邮件地址,只要目标账户的电子邮件在 DiscourseConnect 系统中使用,就不会出现问题。请注意,合并后源用户的电子邮件将成为目标账户的次要电子邮件,如果该电子邮件随后用于 DiscourseConnect,可能会导致登录问题。如有需要,请在合并后删除次要电子邮件。
- 如果 DiscourseConnect 系统使用与 Discourse 用户 ID 不同的唯一用户 ID,若源账户的唯一 ID 未正确映射到目标账户,则合并可能会导致问题。
合并管理员用户
出于安全原因,合并管理员用户必须通过控制台进行。
如果您的网站托管在 Discourse 上,请联系 team@discourse.org 以获取合并管理员用户的协助。
通过控制台合并管理员用户的步骤如下:
root@host:/var/discourse# ./launcher enter app
root@host-app:/var/www/discourse# rake users:merge['source_username','target_username']
Users merged!
root@host-app:/var/www/discourse#
请确保命令中的逗号前后没有空格。
常见问题解答
问:如果合并过程似乎停滞不前怎么办?
答:如果合并进度屏幕长时间没有变化,请尝试刷新页面。合并可能已经完成,但 UI 未更新。
问:我可以撤销用户合并吗?
答:不可以,一旦两个用户合并,该操作无法撤销。源用户账户在合并后会被永久删除。
问:合并用户会影响他们的帖子和主题吗?
答:源用户的所有帖子和主题都将转移到目标用户。这些项目的作者身份将更改为反映目标用户为创建者。

