안녕하세요. 왜 이런 상황에 놓여 있는지 묻지 마세요.
관리자인 제가 세 개의 이메일 주소가 등록되어 있습니다:
주 이메일: 올바른 주소
보조 이메일: 동일한 주소이지만 미확인 상태
세 번째 이메일: 실제로 다른 보조 주소이며 확인 완료 상태입니다.
Rails 콘솔에 접속하면 사용자 ID는 조회할 수 있지만, 여러 개의 대체 이메일 주소를 나열하고 그중 하나를 제거하는 방법을 모르겠습니다. UI로는 작동하지 않는 것 같은데, 아마도 이메일 주소가 동일하기 때문일 것입니다.
이 문제를 어떻게 수정할 수 있을까요?
osioke
(Osioke Itseuwa)
2
레일스 콘솔에서 이메일 주소를 비활성화해 보셨나요? 지금은 명령어를 잘 기억이 나지 않네요.
네, 제가 하려는 게 바로 그겁니다. 콘솔에서는 사용자를 조회할 수 있습니다. 하지만 이후에 여러 이메일 주소를 쿼리하고 중복된 항목을 제거하는 방법은 모르겠네요.
사용자를 선택해도 이메일이 보이지 않는데, 다른 레코드에 있을 것 같습니다.
Koen
simon
4
이메일 주소는 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
콘솔에서 파괴적 명령을 실행하기 전에 사이트 데이터베이스의 백업을 만드는 것이 좋습니다. 문제가 발생하면 백업을 복원할 수 있습니다.
정말 감사합니다. 결국 중복된 이메일 중 하나만 이메일 ID를 가져올 수 있었습니다. 제 추측으로는 삭제할 수 없었던 미확인된 이메일이 아직 해당 ID로 목록에 등재되지 않았기 때문이 아닐까 싶습니다. 아마도 검증 과정이 완료되지 않아 상태가 불분명한 것이겠죠?
해결을 위해 기본 이메일을 두 번째 대체 이메일 주소로 변경했습니다. 미확인된 중복 이메일은 여전히 삭제할 수 없었지만, 확인된 이메일(현재는 더 이상 기본 이메일이 아닌)을 삭제하자 미확인된 중복 이메일도 함께 삭제되었습니다.
그 후 원래 이메일 주소를 보조 이메일로 추가한 뒤 다시 기본 이메일로 변경했습니다.
모든 문제가 해결되었고, 이 과정에서 많은 것을 배웠습니다 