diff --git a/app/models/user.rb b/app/models/user.rb index 3be7770d3..629649d4e 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -473,14 +473,17 @@ class User < ApplicationRecord def guard_unconfirmed_email self.unconfirmed_email = nil if unconfirmed_email.blank? || unconfirmed_email == email - if unconfirmed_email_changed? - self.confirm_email_token = unconfirmed_email ? SecureRandom.hex(15) : nil - end + return unless will_save_change_to_unconfirmed_email? + + self.confirm_email_token = unconfirmed_email ? SecureRandom.hex(15) : nil end # Whenever email is set, clear all unconfirmed emails which match def remove_invalid_unconfirmed_emails - User.where(unconfirmed_email: email).update_all(unconfirmed_email: nil, confirm_email_token: nil) if email_changed? + return unless saved_change_to_email? + # rubocop:disable Rails/SkipsModelValidations + User.where(unconfirmed_email: email).update_all(unconfirmed_email: nil, confirm_email_token: nil) + # rubocop:enable Rails/SkipsModelValidations end # Generate public/private keys for User and associated Person