J’ai effectué les étapes suivantes :
./launcher enter app
rails c
UserEmail.where(user_id: 7, primary: false).destroy_all
UserEmail.create!(user: User.find_by_username("user7"), email: "newemail@example.com")
exit
exit
./launcher restart app
Je ne sais pas si c’est ce que j’ai mal fait, mais cette fois-ci, j’ai seulement exécuté la ligne de suppression. J’ai redémarré l’application et actualisé le site web. L’adresse e-mail secondaire a disparu ! Alors j’ai procédé au reste via l’interface web et j’ai changé l’adresse principale en secondaire, car elle n’est plus bloquée.
Je me ravise : modifier l’e-mail via le web envoie une confirmation à l’adresse valide, mais conserve l’adresse invalide une fois que vous revenez à la page des préférences de l’utilisateur ou à la page d’administration des utilisateurs.
Maintenant, je ne suis plus sûr de quoi faire ![]()
EDIT :
Au risque de spammer ce fil de discussion, j’ai trouvé la solution.
Une fois dans rails c :
J’ai supprimé toutes les adresses e-mail — je ne savais simplement pas comment définir une adresse e-mail comme principale, c’est pourquoi à chaque fois que je rajoutais l’adresse valide, elle était ajoutée comme adresse secondaire.
# Supprimer toutes les adresses e-mail secondaires
UserEmail.where(user_id: 1234, primary: false).destroy_all
# Supprimer l'adresse e-mail principale
UserEmail.where(user_id: 1234, primary: true).destroy_all
# Définir l'adresse e-mail principale
UserEmail.create!(user_id: 1234, email: "validemail@example.com", primary: true)
Cela va sans dire, cela contourne les validations, mais vous avez déjà validé manuellement l’adresse depuis le compte fusionné précédemment, donc j’espère que d’autres personnes pourront utiliser cet exemple. Il ne reste plus qu’à envoyer l’e-mail de réinitialisation du mot de passe une fois l’application redémarrée.