2016-12-14 2 views
0

У меня есть ActiveRecord модели с проверкой электронной почты, который проверяет уникальность:активной запись повышение recordnotunique вместо принимать

validates :email, 
      allow_blank: true, 
      format: { with: /\A.*@.*\z/ }, 
      uniqueness: true 

Когда я пытаюсь вставить новую запись с той же электронной почтой, он дает мне следующую ошибку:

@messages={:email=>["has already been taken"]}, @details={:email=>[{:error=>:taken, :value=>"[email protected]"}

Тем не менее, хочу поднять ActiveRecord::RecordNotUnique.

Возможно ли это?

Я попытался добавить индекс электронной почты при миграции, с unique: true, но ничего не сделал. Что еще я могу попробовать?

+0

Если он не прошел проверку, он не будет пытаться его сохранить, поэтому никогда не ударит уникальный индекс (если вы не используете метод сохранения, который игнорирует проверку) –

ответ

1

Если вы хотите иметь ActiveRecord::RecordNotUnique исключение вместо ошибки :taken проверки, что вам нужно сделать две вещи:

  1. Добавить уникальный индекс в столбце базы данных
  2. Удалить проверку уникальности из модели
Смежные вопросы