Con la migración de Rails 2 a Rails, 3 errores de validación se movieron de ActiveRecord :: Error a ActiveModel :: Errors.
En los carriles 2 el error de validación tenían un tipo y un mensaje (entre otras cosas) y se podía comprobar el tipo del error de validación haciendo algo como lo siguiente:Cómo determinar ActiveModel :: Tipo de validación de errores
rescue ActiveRecord::RecordInvalid => e
e.record.errors.each do |attr, error|
if error.type == :foo
do_something
end
end
end
Pero con Rails 3 parece que todo pero el atributo inválido y el mensaje se han perdido. Como resultado, la única manera de determinar el tipo es comparar el mensaje de error: (.? Por ejemplo, lo que si tiene varias validaciones que utilizan el mismo mensaje)
rescue ActiveRecord::RecordInvalid => e
e.record.errors.each do |attr, error|
if error == "foobar"
do_something
end
end
end
Lo cual no es del todo ideal.
Pregunta:
¿Hay una mejor manera de carriles 3.0 para determinar el tipo de error de validación?
duplicado posible de [? Cómo poner a prueba lo que la validación falló en ActiveRecord] (http://stackoverflow.com/questions/4119379/how-to-test-which- validation-failed-in-activerecord) – lulalala