Agregué una función de restablecimiento de contraseña a mi aplicación de Rails que usa Authlogic. Estaba siguiendo la guía aquí: http://www.binarylogic.com/2008/11/16/tutorial-reset-passwords-with-authlogic/ y todo funciona como me gustaría excepto por una cosa: el formulario de restablecimiento de contraseña acepta contraseñas en blanco y simplemente no las cambia.Validación de fuerza de contraseñas en blanco en Authlogic
He estado buscando y he aprendido que este es el comportamiento predeterminado previsto porque le permite hacer formularios de edición de usuario que solo cambian la contraseña del usuario si ingresan una nueva e ignorarla de lo contrario. Pero en este caso, específicamente quiero aplicar la validación de la contraseña, como cuando un usuario se registra inicialmente. He encontrado dos posibles soluciones para este problema, pero no he podido averiguar cómo implementar ninguno de ellos.
1) Alguien hizo esta misma pregunta en Google Groups: respuesta
User model saves with blank password
de Ben era utilizar @user.validate_password = true
para forzar la validación de la contraseña. Intenté esto pero obtengo un error de método indefinido: undefined method 'validate_password_field=' for #<User>
.
2) Parece que hay una opción de configuración Authlogic llamada ignore_blank_passwords
. Está documentado aquí:
Module: Authlogic::ActsAsAuthentic::Password::Config#ignore_blank_passwords
Esto parece que podría funcionar, pero mi opinión es que se trata de una opción de configuración global que utiliza en su acts_as_authentic
llamada inicial en el modelo de usuario, y no hacer quiero cambiarlo en toda la aplicación, ya que tengo un formulario de edición regular para los usuarios donde quiero que las contraseñas en blanco sean ignoradas por defecto.
¿Alguien ha encontrado una solución a esto? Veo validate_password=
en el registro de cambios de Authlogic 1.4.1 y no se ha eliminado nada desde entonces. ¿Simplemente lo estoy usando incorrectamente? ¿Hay alguna manera de usar ignore_blank_passwords
por solicitud?
Pude utilizar el atributo 'ignore_blank_paswords'. Mira mi respuesta para más detalles. –