2011-06-29 9 views
7

estoy usando authlogic con mi modelo de usuario, cuyo campo de inicio de sesión para utilizar el correo electrónico, por lo tanto:Authlogic: genera "El correo electrónico ya ha sido tomada" error dos veces

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

si trato de hacer una nueva usuario y el correo electrónico ya está en uso, se añade un error de correo electrónico duplicado dos veces: (desde la consola)

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"]} 

supongo que esto es algo que ver con el uso del correo electrónico como el inicio de sesión, tal vez? No tengo otras validaciones en el correo electrónico además de validates_format_of, y experimenté eliminando esa validación (no hace ninguna diferencia).

Es un dolor ya que está estropeando los errores que muestro en el formulario cuando falla la validación.

Antes de intentar piratear authlogic, ¿alguien sabe por qué podría estar pasando esto? gracias, max

Respuesta

10

Acabo de encontrarme con el mismo problema. Intente llamar al config.validate_email_field = false en el bloque acts_as_authentic. Todavía validará el campo de inicio de sesión, que en nuestro caso en el campo de correo electrónico, pero solo una vez.

+0

aha, genial, gracias :) –

+2

También asegúrese de que no tiene la validación asignada manualmente en ese campo, es decir. 'validates: email,: presence => true'. Esto resultó para mí en tener el mensaje devuelto 3 veces. – mrt

2

Existen dos métodos en Authlogic: validate_email_field y validate_login_field.

Estos métodos desactivar/activar las validaciones específicas:

También uso config.login_field :email en mi aplicación, y necesito estar seguro de que User#email está validado Entonces, en mi caso, elegí usar config.validate_login_field = false debido a la diferencia entre las validaciones.

+0

gracias por la información! –

Cuestiones relacionadas