De un tiempo a esta parte, me rompí el coco con ActiveRecord y no me cuadraban ciertas cosas, pero últimamente se me está despejando el panorama.
Aquí un ejemplo comparativo de ActiveRecord y su salida en SQL
ActiveRecord (con will_paginate) |
SQL |
@clientes = Cliente.paginate :page => params[:page], :per_page => 10,
:joins => [ :solicitudes => :clientes_movimientos ],
:conditions => ["clientes_movimientos.saldo > 0 and clientes_movimientos.fecha_vencimiento < date('today')"],
:select =>"distinct clientes.*" |
SELECT distinct clientes.*
FROM "clientes" INNER JOIN "solicitudes" ON solicitudes.cliente_id = clientes.id INNER JOIN "clientes_movimientos" ON clientes_movimientos.solicitud_id = solicitudes.id WHERE (clientes_movimientos.saldo > 0 and clientes_movimientos.fecha_vencimiento < date('today')) LIMIT 10 OFFSET |
Lo bueno de ActiveRecord es que como se puede notar, separa de una manera elegante, los joins, las condiciones, la modificación de la parte del select, siendo más legible incluso que en el SQL.
Aquí lo mescle con will_paginate pero es lo mismo con el método .find solo que se quita lo relativo a will_paginate.
@clientes = Cliente.find( :joins => [ :solicitudes => :clientes_movimientos ],:conditions => ["clientes_movimientos.saldo > 0 and clientes_movimientos.fecha_vencimiento < date('today')"],
:select =>"distinct clientes.*")
Bueno espero que le sirva a alguien, me despido, hasta otro dibague sobre lo que voy descubriendo en Ruby on Rails.
No hay comentarios:
Publicar un comentario