Невозможно удалить вторичный e-mail, идентичный основному, через интерфейс

Привет, не спрашивайте почему, но я сейчас оказался в такой ситуации:

У меня как у администратора указаны три адреса электронной почты:

Основной: правильный.
Вторичный: тот же самый, но неподтвержденный.
Третий: действительно другой вторичный адрес, и он подтвержден.

Запустив rails console, я могу найти ID пользователя, но не знаю, как вывести список всех альтернативных адресов и удалить один из них. Через интерфейс это не работает, вероятно, из-за того, что адреса совпадают.

Как мне это исправить?

Вы пробовали отключать адреса электронной почты через консоль Rails? Я сейчас не помню команду.

Привет, да, именно это я и пытаюсь сделать. В консоли я могу найти пользователя. Но как затем выполнить запрос для получения нескольких адресов электронной почты и удалить дубликаты — я не знаю.

Когда я выбираю пользователя, я не вижу адреса электронной почты; они, должно быть, находятся в какой-то другой записи.

Кен

Адреса электронной почты находятся в таблице user_emails. Вы можете найти их, используя ID пользователя:

UserEmail.where(user_id: <user_id>)

Замените <user_id> в команде выше на ID пользователя.

Найдите значение id записи UserEmail, которую вы хотите удалить. С помощью этого ID выполните следующую команду, чтобы получить конкретную запись для удаления:

identical_email = UserEmail.find(<identical_email_id>)

Ещё раз проверьте полученный результат, чтобы убедиться, что это именно тот адрес, который нужно удалить. Затем выполните:

identical_email.destroy

Перед запуском любых деструктивных команд из консоли рекомендуется создать резервную копию базы данных вашего сайта. В случае возникновения проблем вы сможете восстановить данные из резервной копии.

Огромное спасибо. Как выяснилось, я мог извлечь только один идентификатор электронной почты для дубликатов. Мне кажется, что неподтверждённая запись, которую я не мог удалить, ещё не была привязана к этому идентификатору? Возможно, процесс проверки был незавершённым и находилась в подвешенном состоянии?

Чтобы решить проблему, я сделал один из двух альтернативных адресов электронной почты основным. Неподтверждённый дубликат всё ещё не удалялся, но когда я удалил подтверждённый (теперь уже бывший основной) адрес, то и неподтверждённый дубликат тоже исчез.

Затем я добавил исходный адрес электронной почты как дополнительный, а потом сделал его основным.

Всё наладилось, и я многому научился в процессе :wink: