本指南介绍如何将多个用户账户合并为单个 Discourse 账户。内容包括通过 Discourse 界面合并非工作人员(Non-staff)用户,以及通过控制台合并工作人员(Staff)用户。
所需用户权限:管理员
在 Discourse 中合并用户账户可以将多个账户合并为一个。这在以下几种场景中非常有用:
- 当用户创建了多个账户时(例如忘记了之前的注册信息)。
- 如果用户使用新的电子邮件地址创建了新账户,而没有更新现有账户的电子邮件。
- 当用户希望将用于不同目的(例如个人、工作或测试)的多个账户整合到一个账户中时。
合并非工作人员用户
管理员可以直接通过 Discourse 界面合并非工作人员用户。
此操作不可逆。合并后,源用户账户将被删除。
要合并两个非工作人员用户:
- 导航到源用户(即你要从中合并的账户)的用户管理页面。
- 滚动到页面底部。
- 点击“合并”(Merge)按钮。
- 在第一个弹出窗口中,输入目标账户(即你要合并到的账户)的用户名,然后点击“转移并删除”(Transfer & Delete)。
- 将出现确认对话框。输入显示的确认文本(例如
transfer @source to @target),然后点击“转移并删除”(Transfer & Delete)以启动合并。
合并大型账户可能消耗大量资源,具体处理时间取决于源用户关联的数据量。
哪些内容会被合并?
合并用户账户时,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#
确保命令中逗号前后没有空格。
常见问题
问:如果合并过程似乎停滞了怎么办?
答:如果合并进度屏幕在很长一段时间内没有变化,请尝试刷新页面。合并可能已经完成,但界面未更新。
问:我可以撤销用户合并吗?
答:不可以,一旦两个用户合并,该操作无法撤销。合并后,源用户账户将被永久删除。
问:合并用户会影响他们的帖子和主题吗?
答:源用户的所有帖子和主题都将转移到目标用户。这些内容的作者身份将更改,以反映目标用户为创建者。

