Rails fomenta el uso del save sin exception, por lo que tira el scaffolding
(a menos que en alguna versión haya cambiado).
Si bien estaría en línea con lo más papista de orientación a objetos
utilizar exceptions, creo que sirvió bastante como se usa hoy...
Por un lado, en un bloque format necesitaríamos abrir con un begin, ya que
si dejamos un rescue para todo el action no podríamos especificar distintos
formatos (al menos de una manera simple).
Quizá es un tema de sintáxis y se puede encontrar una manera que no sea más
molesta que la actual del scaffolding...
Se me ocurre que con un error sería así:
def create
@post = Post.create! params[:post]
respond_to do |format|
flash[:notice] = "Okey dokey"
format.html
format.xml { ... }
end
rescue ActiveRecord::RecordInvalid
respond_to do |format|
flash[:notice] = "Damnit"
format.html
format.xml { ... }
end
end
Debería buscar si RecordInvalid es el error que estoy buscando...
Por otro lado, de esta manera se podría intentar utilizar un rescue_action
genérico...
En fin, no encuentro mucho que me tire hacia un lado o el otro.
Saludos,
nachokb
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