ユーザープロファイル内の重複したメールアドレス

あるユーザーのプロフィールで、メールアドレスのリストに同じアドレスが2回登録されています。最初のエントリは「プライマリ」に設定されており、2番目のエントリは「未確認」です。

ユーザーは2番目のアドレスを削除することも確認することもできません(すでにこのアドレスを持つユーザーが存在するため…)。私自身も削除できません(DELETE リクエストが 428 応答を返します)。

データベースを検索してみましたが、user_emails テーブルには1つのエントリしか表示されません。このような状態になる原因と、解決方法はありますでしょうか?

インデックスが破損している可能性があります。Discourse と Postgres のバージョンを教えていただけますか?

ソーシャルログインは有効になっていますか?考えられるケースとして、メールアドレスでサインアップしようとしたが、検証メールに返信せず、その後ソーシャルログインでログインした可能性があります。

Rails コンソールで修正するか、直接 SQL で修正することをお勧めします。

アドレスが二度表示される点が混乱を招くこと以外に、実際の問題はありませんか?ユーザーはログインできますが、プロフィールに余分なアドレスが登録されている状態です。

  • Discourse 2.7.0.beta4 (33df4233c9)
  • Postgres 13 (dpkg の出力: 13.1-1.pgdg100+1)

はい、有効です。ただし、このユーザーはどのソーシャルアカウントにも連携されていないため、現状では利用できない状態です(私の理解では)。

試しましたが、SQL 上で重複するアドレスは見つかりませんでした。user_emails テーブルにはこのユーザーに対応する行が 1 件のみ表示され、user_open_idsuser_associated_accounts にはエントリがありません。どこを検索すべきかヒントをいただけますか?

その通りです。ただ、これが将来的により深刻な問題の兆候である可能性を懸念しており、早期に修正しておきたいと考えています。