discourseデータベースのexternal_idを更新しても大丈夫ですか?

Discourse DB の external_id の更新に関する情報をフォーラムで探していました。

興味深いトピックを見つけました:

それでも、データベースの external_id を更新することの影響に関する洞察を得たいと思っていました。

SQL UPDATE を発行して、新しく正しい external_id を設定することはできますか?隠れた問題が発生する可能性はありますか?例えば、ユーザーが現在開いているセッションがある場合や、その他の問題はありますか?

ユーザーは外部システムのユーザーアカウントIDである external_id を使用して SSO を介して作成されました。(何か別のモデルが必要になるかもしれませんが、少なくとも現時点では外部システムのモデルを変更せずに済むなら素晴らしいことです)

私の問題は、その人が外部システムに複数のアカウントを持っている可能性があり、それらのアカウントを 1 つにマージできるため、マージ方法によっては、同じユーザー/メールに対して新しい external_id が生成されることがあることです。

require_activation オプションを使用しているため、言及されたトピックで読んだように、レコードを削除して再作成されるのを待つことはできません。

ありがとうございます。

はい、それは可能ですが、まず根本的な問題を修正する必要があります。

たとえば、アカウントがマージされる場合は、常に最も低い ID が割り当てられる/使用されるようにしてください。

「いいね!」 3

はい。外部アカウントのマージ中に、古いアカウントを尊重していますが、それが常に私が望むものではありません。

一部のアカウントはフォーラムとやり取りし(タイプAとしましょう)、他のアカウントはそうではありません(タイプB)。

そのため、最初にタイプBのアカウントを作成し…
その後、タイプAのアカウントを作成し、フォーラムでSSOを行います。

その後、AとBをマージし、異なるexternal_idを持つ古いアカウントを尊重します。

はい…
外部システム用のソリューションを考案する必要があります…

しかし、一時的な解決策として、このようなことが発生したかどうかを確認し、external_idを修正する毎日のcronを設定するつもりです。

ありがとうございます!

その場合は、以下のいずれかの方法が考えられます。

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.