Authlogic: дважды выдает ошибку «Электронная почта уже получена» - PullRequest
7 голосов
/ 29 июня 2011

Я использую authlogic с моей моделью пользователя, с полем входа, установленным для использования электронной почты, таким образом:

acts_as_authentic do |c| 
  c.login_field = :email 
end  

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

user = User.new(:first_name => "fred", :last_name => "Smith", :email => User.last.email);user.valid?;errors = user.errors
=> {:email=>["has already been taken", "has already been taken"]} 

Я полагаю, это как-то связано с использованием электронной почты в качестве логина?У меня нет никаких других проверок на электронную почту, кроме validates_format_of, и я экспериментировал с удалением этой проверки (не имеет никакого значения).

Это боль, потому что это портит мои ошибки, которые я показываю в форме, когда проверка не проходит.

Прежде чем я попытаюсь взломать authlogic, кто-нибудь знает, почему это может происходить?спасибо, макс

Ответы [ 2 ]

10 голосов
/ 18 августа 2011

Я просто столкнулся с той же проблемой. Попробуйте позвонить config.validate_email_field = false в блоке acts_as_authentic. Он по-прежнему будет проверять поле входа в систему, что в нашем случае в поле электронной почты, но только один раз.

acts_as_authentic do |config|
  config.login_field :email
  config.validate_email_field = false
    ...
end
2 голосов
/ 01 апреля 2014

В Authlogic есть два метода: validate_email_field и validate_login_field.

Эти методы отключают / включают определенные проверки:

Я также использую config.login_field :email в своем приложении, и я должен быть уверен, что User#email проверен. Поэтому в моем случае я решил использовать config.validate_login_field = false из-за разницы между валидациями.

...