Я искал информацию на форуме о том, как обновить external_id в базе данных Discourse.
Нашёл интересную тему:
Тем не менее, меня интересуют подробности о последствиях обновления external_id в базе данных.
Могу ли я просто выполнить SQL-запрос UPDATE и задать новый правильный external_id? Может ли это привести к каким-либо скрытым проблемам? Например, если у пользователя есть активная сессия или что-то ещё?
Пользователи создаются через SSO с использованием external_id, который представляет собой ID аккаунта пользователя во внешней системе. (Мне, возможно, потребуется изменить модель, но было бы здорово пока избежать изменений в модели внешней системы).
Проблема в том, что у человека может быть несколько аккаунтов во внешней системе, и он может объединить их в один. В результате, в зависимости от способа объединения, для одного и того же пользователя/электронной почты может появиться новый external_id.
Я использую опцию require_activation, и, как я прочитал в упомянутой теме, я не могу удалить запись и ждать её повторного создания.
a) синхронизировать все учетные записи с Discourse, используя механизм синхронизации SSO
b) отслеживать, какие учетные записи использовались для входа в Discourse
или
c) при слиянии выполнить внешний поиск по ID, чтобы определить, с какой учетной записью (или записями) пользователь работал в Discourse