UIからプライマリメールアドレスと同じセカンダリメールアドレスを削除できません

こんにちは。なぜそうなったかはともかく、今私は以下の状況に陥っています:

管理者として、以下の3つのメールアドレスが登録されています:

  • プライマリ:正しいもの
  • セカンダリ1:同じものだが未確認
  • セカンダリ2:実際に異なる別のアドレスで確認済み

Rails コンソールでユーザーIDは確認できますが、複数の代替メールアドレスを一覧表示したり、その中から1つを削除する方法がわかりません。UIからはおそらくメールアドレスが同一であるため操作できないようです。

この問題を修正するにはどうすればよいでしょうか?

Rails コンソールからメールアドレスを無効化してみましたか?今のところ、そのコマンドを思い出せません。

こんにちは、はい、まさに私がやろうとしていることです。コンソールではユーザーを検索できますが、その後、複数のメールアドレスを照会して重複を削除する方法がわかりません。

ユーザーを選択してもメールアドレスが表示されないため、別のレコードにあるはずです。

Koen

メールアドレスは user_emails テーブルに格納されています。ユーザーの ID を使用して取得できます。

UserEmail.where(user_id: <user_id>)

上記のコマンド内の <user_id> を実際のユーザー ID に置き換えてください。

削除したい UserEmail レコードの id 値を取得します。その ID を用いて以下のコマンドを実行し、削除対象の個別レコードを取得します。

identical_email = UserEmail.find(<identical_email_id>)

返された結果を必ず確認し、削除したいメールアドレスであることを確認してください。その後、以下を実行します。

identical_email.destroy

コンソールから破壊的なコマンドを実行する前に、サイトのデータベースのバックアップを作成しておくことをお勧めします。何か問題が発生した場合、バックアップから復元できます。

「いいね!」 1

どうもありがとうございます。結果として、重複しているメールアドレスのIDは1つしか取得できませんでした。おそらく、削除できなかった未確認のアドレスは、まだそのIDでリストに反映されていなかったのでしょう?検証プロセスが不完全な状態で、状況が少し曖昧だったのかもしれません。

私が取った解決策は、プライマリを2つの代替メールアドレスのどちらかに切り替えることでした。それでも未確認の重複アドレスは削除できませんでしたが、確認済みのアドレス(現在はプライマリではなくなったメール)を削除すると、未確認の重複アドレスも同時に削除されました。

その後、元のメールアドレスをセカンダリとして追加し、それをプライマリに切り替えました。

すべて解決し、その過程で多くのことを学びました :wink:

「いいね!」 1

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