- Pulsar dos veces la tecla enter/intro
- Doble click en "guardar"
- Registros duplicados aleatorios inexplicables.
- Usuarios que intentan sabotear / automatizar la aplicación mandando múltiples submits.
- Una lógica de modelo que no gestiona los duplicados.
En algunos casos, bien por la acción del mismo usuario o por algún error derivado del envió del post, el servidor recibe dos peticiones de post idénticas, entonces se puede dar el caso que acepte las dos y se generen registros duplicados o que se guarde un registro y se devuelva un mensaje de error para el segundo, con lo que confundiremos al usuario.
Aproximaciones al problema:
- Implementación javascript del tipo "<form onSubmit="doublePostCheck()"> donde la función solo devuelve verdadero la primera vez.
- Token / Flag validation: de un variable tipo "hidden" en el cliente y validación en el servido.
- Hash de les variables del post y comparación de este con el último.
La solución ':disable_with => 'Saving...' :
Modificar la vista y añadir "<%= f.submit 'Save', :disable_with => 'Saving...' %>".
La solución cumple con:
- Evita el problema del "doble enter", "doble click".
- Evita el problema del doble envio del post
- KISS (Keep it simple stupid).
- SPOT (Single point of thrut).
No hay comentarios:
Publicar un comentario