Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Данный gem как раз использует родной unique index, и перехватывает ошибку от БД, трансформируя её в ошибку валидации, которую можно показать пользователю.
Как пишет автор, в противном случае бы пользователь увидел страницу HTTP 500.
Можно перехватить, но информацию о том, какое поле вызвало такое исключение, придётся парсить из примерно вот такой строки:
ERROR: duplicate key value violates unique constraint "index_users_on_email" DETAIL: Key (email)=(hello@example.com) already exists.
database_validations
делает это за вас, причём прозрачно, так, что разницы между validates_db_uniqueness_of
и validates_uniqueness_of
вы и не заметите.
Настоящая валидация на уникальность