2012-02-10 17 views
6

Estoy aprendiendo RoR en este momento, y creo que debo estar malinterpretando algo.¿Por qué no puedo verificar las validaciones de ActiveRecord en la consola?

Tengo un usuario de llamada de clase ActiveRecord, con validaciones simples en: nombre y correo electrónico como presencia: verdadero, longitud: {máximo: 15}, etc. Pensé que verificaría las validaciones en la consola. Voy a la consola de rails (entorno de desarrollo) y creo una nueva instancia con un nombre que es demasiado largo, como user_instance = User.new (name: "aaaaabbbbbcccccddddd", email: "").

La validación no arroja ningún error. Cuando intento user_instance.save, el registro no se escribe en la base de datos, por lo que obviamente está funcionando bien en esa etapa. ¿Qué estoy haciendo mal?

Respuesta

13

Cuando se desea conseguir una excepción planteada en el ahorro de registro, utilice save! en lugar de save (lo mismo con update/update!, create/create!).

Con save no tendrá una excepción alzada si hay errores de validación, simplemente devolverá false. También puede verificar si hay errores en una instancia con user_instance.valid? y obtener los errores con user_instance.errors.

Ver When Does Validation Happen?.

+0

Gracias Florent2, muy útil – micklec

+0

Súper útil: hace más de un año que hace transición a los rieles y de alguna manera me lo ha eludido – Polsonby

+0

Quizás esté disponible en una versión más nueva de 'Rails', yo uso' user_instances.errors.full_messages'. Se le muestran los errores en un formato legible para humanos. – Tass

5

la validación no generará errores si intenta establecer datos no válidos en su modelo; sin embargo, el guardado fallará.

si quiere saber si la validación está funcionando correctamente, simplemente marque user.valid? y debe devolver falso

después de llamar al válido?, puede marcar user.errors para ver los errores específicos establecidos en su modelo.

+0

Gracias, Bassam, eso tiene sentido para mí ahora, y puedo ver user_instance.valid? está devolviendo un hash @mensajes con los resultados de validación. – micklec

+0

@micklec genial !! ¡Me alegro de poder ayudar! –

Cuestiones relacionadas