Jorge Alvarez

Como obtener el sql generado por Active Record

Posted in active_record, Internet, programacion, rails, ruby by jorgegorka on 24/02/2009

A veces puede ser necesario guardar el contenido de una consulta para poder ejecutarlo más tarde.

En Rails Active Record no proporciona una forma sencilla de obtener el sql que ha generado.  Podemos verlo en el log pero no acceder a él directamente para poder guardarlo.

Por ello y después de un par de horas de Googleo he creado el siguiente código que extiende el objeto Active Record para darme lo que necesito.

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 :condtions, :order, :joins….. etc…

Anuncios

Una respuesta

Subscribe to comments with RSS.

  1. Lucas said, on 24/06/2009 at 4:26 PM

    Gracias por el ejemplo! Justo lo que estaba necesitando 🙂


Los comentarios están cerrados.

A %d blogueros les gusta esto: