Obtener el código sql de Active Record


#1

Hola:

Necesitaba obtener el sql que active_record genera para guardarlo y
poder
ejecutarlo posteriormente.

Tras mucho Googlear por la web no he visto nada ni a nadie con mi mismo
problema (por lo que igual el que tiene necesidades raras soy yo).

Así que he tirado por el camino de enmedio y he modificado Active Record
para que me de lo que le pido.

Este es el código resultante:

module ActiveRecord
class Base
class << self
def view_sql(*args)
options = args.extract_options!
validate_find_options(options)
set_readonly_option!(options)
construct_finder_sql(options)
end
end
end
end

Guardad el código anterior en un fichero dentro de la carpeta
config/initializers (ejemplo: view_sql.rb)

Ahora ya podemos obtener el código ejecutando nuestras consultas
habituales
con el núevo método:

Ejemplos:

Persona.view_sql(6) nos devolverá ‘select * from personas where id=6’

Admite todas las opciones de find :conditions, :order, :joins…
etc…
Si a alguien le puede servir, pues perfecto y si lo pueden mejorar, pues
fantástico.

Saludos,

Jorge A.
www.informatica32.com


#2

Si usas mongrel ya salen los SQL por el log del servidor por defecto

2009/2/24 Jorge A. removed_email_address@domain.invalid


#3

El 24/02/2009, a las 19:16, Jorge A. escribió:

end
end

Como sugerencia se me ocurre una sintanxis chula, que para depurado me
vendría bien a veces.

sql = ActiveRecord::Base.track_sql do
Person.find(8).update_atrribute(:name, ‘pepe’)
end

sql # select * fron persons where id = 8; update name = ‘pepe’ where
id = 8;

Por poner un ejemplo.


Guillermo Álvarez Fernández
removed_email_address@domain.invalid
http://cientifico.net