Пользовательская проверка Rails 3 на уникальность электронной почты

Я использую базу данных Riak для моего текущего проекта, который не поддерживает вспомогательный метод «уникальность». Теперь я хочу проверить электронную почту пользователя на уникальность. Как написать пользовательскую проверку для уникального адреса emial ??


person Arif Usman    schedule 16.04.2014    source источник
comment
Пожалуйста, ознакомьтесь с этим stackoverflow.com/questions/7888009/ripple-with-devise.   -  person Pavan    schedule 16.04.2014


Ответы (2)


Попробуйте что-нибудь вроде этого. Возможно, вам придется изменить часть User.exists?, если она не работает с вашей БД.

class User
  validate :verify_unique_email

  def verify_unique_email
    if User.exists? email: email
      errors.add :email, 'has already been taken'
    end
  end
end
person Jon    schedule 16.04.2014
comment
существует? метод не поддерживается в Riak - person Arif Usman; 16.04.2014
comment
Как я уже сказал, вам, возможно, придется изменить этот запрос. Однако вы проверяете, существует ли запись с определенным значением, сделайте это. Если вы найдете его, добавьте ошибку, как я показал. - person Jon; 16.04.2014

Вы можете поместить что-то вроде этого в свой валидатор:

Class User
  validate :unique_email_address?

  def unique_email_address?
    return false if User.where(email: self.email).any?
  end

end

Дайте мне знать, если вам нужна помощь с пользовательским файлом валидатора.

person Matthew Leonard    schedule 16.04.2014