Resumen: Estoy tratando de alterar el valor de un atributo dentro de una costumbre ActiveModel::EachValidator
validador. Dado el siguiente prototipo:cambiar o actualizar un valor de atributo durante la validación rieles ActiveRecord
def validate_each(record, attribute, value)
tratando de establecer value = thing
no parece hacer nada - me estoy perdiendo algo? Debería haber una forma inteligente de hacerlo ...
Detalle: Acepto una entrada de URL como parte de un sitio. No quiero simplemente tomar la URL y validar directamente que devuelve un mensaje 200 OK
, porque eso ignoraría las entradas que no comenzaron con http
, o dejó fuera el www
líder, etc. Tengo un poco de lógica personalizada para tratar con esos errores y seguir redireccionamientos. Por lo tanto, me gustaría que la validación a tenga éxito si un usuario escribe en example.org/article
en lugar de http://www.example.org/article
. La lógica funciona correctamente dentro de la validación, pero el problema es que si alguien escribe en el primero, el valor almacenado en la base de datos está en el formato "incorrecto" en lugar de en el bien actualizado. ¿Puedo cambiar la entrada durante la validación a una forma más canónica?
+1 por preguntar buena pregunta – neeraj