No se puede poner el campo de dirección de correo electrónico en el formulario de inicio de sesión (Authlogic)

Así que tengo Authlogic trabajando bien con esta user_sessions/new vista:

  user_session_path do |f| %>  Invalid username or password  





'margin-right: 10px' %>

Pero cuando me cambio

  

a

  

Recibo este error al cargar la vista:

 undefined method `email' for # 

Pero, por supuesto, mi tabla de usuarios tiene un campo de email , etc.

Usted está haciendo esto de manera equivocada:

Tratar:

 class UserSession < Authlogic::Session::Base find_by_login_method :find_by_login_or_email end 

y en user.rb

 def self.find_by_login_or_email(login) find_by_login(login) || find_by_email(login) end 

Su UserSession no tiene ningún concepto de correo electrónico (solo conoce el inicio de sesión).

Se ejecuta mediante un proceso de búsqueda de un usuario dado un inicio de sesión, que puede interceptar y anular (con find_by_login_method ). Para obtener un bono adicional, también puede anular, login_field y password_field o incluso verify_password_method

Suponiendo que está usando un modelo de usuario, la forma más fácil de usar el correo electrónico para la autenticación en Authlogic es:

 class User < ActiveRecord::Base acts_as_authentic do |c| c.login_field = 'email' end end 

Compruebe que su sesión de usuario herede UserSession

Tuve el mismo problema y descubrí que tienes que asegurarte de que el inicio de sesión no esté en tu esquema y base de datos (no lo necesitarás de todos modos ya que has decidido emplear el correo electrónico como lo he hecho)

Podría estar completamente equivocado al respecto, pero creo que si crea un modelo de usuario con un campo de correo electrónico y sin campo de inicio de sesión, Authlogic usará esto para la UserSession. Sin embargo, si su modelo de usuario tiene un campo de inicio de sesión pero no lo está utilizando (es decir, cambió la vista a: correo electrónico en lugar de: inicio de sesión), UserSession seguirá buscando el inicio de sesión y no el correo electrónico para que aparezca el mensaje de error. .

Si su modelo de usuario no tiene un campo de inicio de sesión, este problema debería desaparecer, ya que Authlogic usará por defecto el correo electrónico.

No sé exactamente cómo funciona Authlogic, pero supongo que es lo que terminaste

Pero, por supuesto, mi tabla de usuarios tiene un campo de correo electrónico, etc.

Por lo que parece, eso no significa necesariamente que su UserSession lo tenga, ¿o sí?

Es decir que en UserSession no hay campo de correo electrónico. No está mirando al usuario, ya que tiene:

 form_for @user_session