Los errores funcionales trato de manejarlos como excepciones, por lo cual
suelo usar save!.
Me parece que separa mejor el flujo "esta todo ok, le doy para delante" del
flujo "de aca no podemos seguir por que ..."
El estilo con if y chuequeando flags de si anduvo o no (en este caso
chuquear el resultado de save) me recuerda los viejos dias.

Cabe mencionar que aunque trato los errores funcionales como excepciones,
son excepciones de otro tipo, de un tipo que estoy preparado para manejar
(mostrando los errores al usuario por ejemplo). Es cierto que el nombre
excepcion nos da a pensar que es algo que no esperabamos, pero ultimamente
parece ser algo aceptado para cosas que inclusive las esperamos (como por
ejemplo la excepcion StopIteration).

En cambio los error técnico son excepciones de otro tipo y no los trato,
dejo que la aplicación falle para que no pase desapercibido que hay algo mal
en la app y que tiene que resolverse cuanto antes.

Por supuesto que hay que ser algo pragmatico, por lo que, de vez en cuando
(si el purismo ensucia mas de lo que oscurece) rompo la regla y meto el if,
pero en gral tiendo a pensar primero en excepciones.

2008/12/1 Pilaf <[EMAIL PROTECTED]>

> En general cuando solo necesito guardar un record con validaciones
> simples (sin magia negra como decís vos) suelo usar la típica:
>
> if record.save
>  redirect_to bla
> else
>  render formulario_otra_vez
> end
>
> Que me resulta bastante más práctico que usar un begin/rescue.
>
> Ahora, los casos donde suelo usar save! son:
> - Cuando guardo un record como efecto secundario de algún otro método.
> - Cuando no espero que hayan problemas de validación (ej: marcar como
> leido un mensaje de un inbox, donde lo único que cambia es un atributo
> boolean y siempre al mismo valor), entonces me alcanza con tirar una
> excepción sin atender para manejar el error (si falla por un bug mío
> me va a ayudar a verlo en tiempo de desarrollo, si es un usuario
> malicioso se jode).
> - Para debug.
>
> Saludos,
>
> -Pedro
>
> 2008/12/1 Pedro Visintin <[EMAIL PROTECTED]>:
> > Hola Gente:
> >
> > Tema medio filosófico que se aplica a otros lenguajes también.
> >
> > Cuando tenemos que, por ejemplo, grabar un modelo active record en un
> > controller.
> >
> > No se imaginen cosas raras, el modelo no tiene ninguna cosa mágica
> dentro,
> > solo validaciones.
> >
> > Qué usamos save! o save?
> >
> > Pregunta adicional, los errores funcionales (el usuario mete mal los
> dedos)
> > deben ser tratados como excepciones?
> >
> > Todo debería ser una excepción? o se simplifica si los errores
> funcionales
> > (las password no coinciden por ejemplo) son manejados por el código sin
> > excepciones y los técnicos (duplicate key entry) son manejados por
> > excepciones.
> >
> > Que piensan?
> >
> > P
> >
> > --
> > Pedro   Visintin . S o f  t w a r e   A r c h i t e c t
> > http://www.pedrovisintin.com
> >
> > Ruby On Rails Argentina. http://blogs.onrails.com.ar
> >
> > Personal page:
> > http://www.p-e-t-e-r-p-u-n-k.com.ar
> >
> > "Todo descontento por aquello que no tenemos parece provenir solamente de
> > nuestra falta de gratitud por aquello que tenemos"
> >
> >
> > _______________________________________________
> > Ruby mailing list
> > [email protected]
> > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
> >
> >
> _______________________________________________
> Ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a