以前にもこのエラーを確認しています。チケットシステムで検索しました。
これは、以下のような場合に発生します。
require activationがtrueに設定されている- Discourse に特定のメールアドレスを持つユーザー U1 がいる(外部 ID が A である可能性あり)。
- DiscourseConnect プロバイダー側に、同じメールアドレスで異なる外部 ID(B)を持つユーザー U2 がいる。
ユーザーがログインすると、Discourse は外部 ID B を持つユーザーが存在するかどうかを確認しますが、存在しません。
通常、Discourse は次のステップとしてメールアドレスで照合を行いますが、require activation が設定されているため、メールアドレスは信頼されず、このステップはスキップされます。これにより、アカウント乗っ取りが可能になるため、ユーザー U1 とは関連付けられません。
そのため、Discourse は新しいユーザーを作成しようとしますが、そのメールアドレスは既にユーザー U1 によって使用されているため失敗します。
メールアドレスが存在するものの信頼できない場合に、より適切なエラーメッセージが表示されると良いでしょう。また、なぜ一般的な Rails エラーが表示されるのかも不明です。
解決策:
- DiscourseConnect プロバイダー側のメールアドレスが検証済みで信頼できる場合は、
require activationをfalseに設定します。
または - ユーザー U1 の外部 ID を B に変更します。
または - ユーザー U1 のメールアドレスを別のものに変更します。
このトピックがこのエラーを検索するユーザーに見つけられるように、「求めていた変更は却下されました」というテキストを追加します。