Насколько я знаю, нет простого решения вашей проблемы.
Помимо сопоставления строк и проверки базы данных на наличие существующих записей, единственное, о чем я могу думать, это устранить все другие возможные ошибки.
Например, Devise проверяет наличие и уникальность адреса электронной почты. Если вы можете проверить, является ли user.email.present?
, вы можете устранить эту проблему. Если эти две проверки (наличие и уникальность) являются единственными двумя проверками адреса электронной почты, вы будете знать, что проверка не удалась из-за уникальности.
Теперь, конечно, Devise также проверяет электронную почту, чтобы убедиться, что это действительный адрес электронной почты, что означает, что вам придется исключить как наличие, так и формат электронной почты, прежде чем вы сможете с уверенностью сделать вывод, что уникальность является провальным фактором .
В общем, ваша самая безопасная ставка, вероятно, будет снова проверять базу данных. Ваша самая простая опция - сопоставление строк. Единственное, за что вам следует следить, - это изменение сообщения об ошибке по умолчанию в более поздних версиях Rails.