Rescue ActiveRecord::RecordNotFound

Estoy validando mi aplicación para que el usuario no se invente la url y
salgan errores.
Me funciona en este caso:
def ver_proyecto
begin
@proyecto=Proyecto.find(params[:id])
rescue ActiveRecord::RecordNotFound
logger.error(“Se ha intentado acceder a un proyecto no
valido #{params[:id]}”)
redirect_to :action=>‘index’
else
@fotos=Foto.find(:all,:conditions=>[“hidden=0 and
proyecto_id=#{@proyecto.id}”])
end
end

Pero en éste no me funciona, no se si porque no está mirando por el id y
está buscando por otro campo, el caso es que nunca se mete en el rescue:
def ver
begin
permalink=params[:permalink]
@pagina = Pagina.find_by_permalink(permalink)
rescue ActiveRecord::RecordNotFound
logger.error(“Se ha intentado acceder a una pagina no
valida #{params[:permalink]}”)
redirect_to :action => :index
else
@proyectos=Proyecto.find(:all,:conditions=>[“hidden=0 and
pagina_id=#{@pagina.id}”])
end
end

Estoy haciendo algo mal? Gracias

On 5/22/07, Miguel Angel Calleja Lázaro [email protected] wrote:

Pero en éste no me funciona, no se si porque no está mirando por el id y
está buscando por otro campo, el caso es que nunca se mete en el rescue:
[…]
begin
permalink=params[:permalink]
@pagina = Pagina.find_by_permalink(permalink)
rescue ActiveRecord::RecordNotFound
logger.error(“Se ha intentado acceder a una pagina no
valida #{params[:permalink]}”)
redirect_to :action => :index
[…]

Estoy haciendo algo mal? Gracias

Al contrario que find(id), find_by_* no genera una excepción cuando no
encuentra nada, sino que devuelve nulo; sería eso lo que deberías
comprobar, en vez de usar rescue.


Sergio Gil Pérez de la Manga
e-mail > [email protected]
blog > http://www.lacoctelera.com/porras