在 discourse 数据库上更新 external_id 是否可以?

我一直在论坛上搜索有关更新 discourse 数据库中 external_id 的信息。

发现这个话题很有趣:Is it possible to change users SSO's external_id after a DB migration?

尽管如此,我还是想了解一些关于更新数据库中 external_id 的影响的见解。

我可以直接发出一个 SQL 更新并设置新的正确的 external_id 吗?这会带来什么隐藏问题吗?比如用户当前是否有打开的会话或其他问题?

我是通过 SSO 使用 external_id 创建的用户,该 external_id 是用户在外部系统中的帐户 ID。(我可能需要模拟其他东西,但至少目前能够避免更改外部系统模型会很棒)

我的问题是,该用户在外部系统上可能有多个帐户,并且可以将这些帐户合并为一个,因此有时根据他如何合并,同一个用户/电子邮件可能会出现一个新的 external_id

我正在使用 require_activation 选项,正如我在上述话题中所读到的,我不能删除记录并等待它被重新创建。

谢谢

是的,你应该可以做到,但你应该先解决真正的问题

例如,在合并账户时,请始终确保分配/使用最低的 ID。

3 个赞

是的……在合并外部账户时,我会保留最旧的账户……但有时这并不是我想要的。

有些账户会与论坛互动(比如 A 类),而另一些账户则不打算这样做(B 类)。

所以,如果他们先创建一个 B 类账户……
然后他们又创建了一个 A 类账户,并在论坛上使用 SSO 登录。

之后他们合并 A 和 B 账户,并保留具有不同 external_id 的最旧账户。

所以是的……
我需要为我的外部系统想出一个解决方案……

但我认为我会设置一个每日 cron 任务,检查是否发生了这种情况,并暂时修复 external_ids。

谢谢!

在这种情况下,您可以选择:
a) 使用 SSO 同步机制将所有账户同步到 Discourse
b) 跟踪哪些账户已用于登录 Discourse

c) 在合并时,通过外部 ID 查找 来确定哪些账户已与 Discourse 一起使用

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.