Ой, я потерял телефон. Как теперь получить OTP?

Сегодня я снова посмотрел на это и обнаружил, что:

[25] pry(main)> how.totp_enabled?
=> false
[26] pry(main)> how.backup_codes_enabled?
=> true
[27] pry(main)> how.totp_or_backup_codes_enabled?
=> true

Так что я попытался удалить также резервные коды, следуя ответу выше от @falco:

UserSecondFactor.backup_codes.where(user_id: id).each(&:destroy!)

Вот полное решение для отключения OTP для пользователя, который потерял доступ: необходимо удалить как записи totps, так и backup_codes, чтобы вызов #totp_or_backup_codes_enabled? возвращал false.