Ruby on Rails / Devise: omitiendo la opción de validación personalizada en el modelo al restablecer la contraseña

En mi proyecto, modifiqué el formulario de registro en Devise para agregar una opción: aceptar a través de un descriptor de acceso (el usuario debe aceptar los términos de servicio para registrarse, etc.). Si no están de acuerdo, no se valida.

Eso causó un problema cuando un usuario intentó editar la información de su cuenta mientras buscaba la validación: accept, pero pude agregar una cláusula 'a menos' y agregué otro descriptor de acceso llamado :igned_in que está definido en el controlador (no pude No descubra cómo hacer que el modelo determine si el usuario inició sesión o no, los ayudantes del dispositivo no funcionarían para mí). Las partes relevantes de mi modelo de usuario y users_controller se parecen a .

user.rb

validates :agree, :term_agreement => TRUE, :unless => :signed_in

users_controller.rb

def update
   @user = User.find(params[:id])

   if user_signed_in?
     @user.signed_in = params[:user]
   end

  [...]
end

Por lo tanto, todo funciona bien ... la validación "aceptar" se anula cuando un usuario ya ha iniciado sesión. Sin embargo, tengo que encontrar la mejor manera de anular otro escenario ... cuando un usuario restablece su contraseña y necesita cambialo

Estaba probando cuentas de usuario e intenté restablecer mi contraseña en una cuenta, sin embargo, me golpeó con: validación de acuerdo ... ahora tengo que encontrar una manera de anular eso. Noté que el formulario Cambiar su contraseña tiene un valor de campo oculto de: reset_password_token, sin embargo, intenté: a menos que =>: reset_password_token pero no funcionaría.

Entonces, ¿cuál es la mejor manera de lograr esto? Además de eso, ¿cómo puedo tener una condición o una (o menos: firmado_in o: restablecer_contraseña, etc.) para eso: a menos que la cláusula?

Respuestas a la pregunta(3)

Su respuesta a la pregunta