--------------------------------------------------
From: "Nicolás Sanguinetti" <[email protected]>
Sent: Monday, February 22, 2010 6:52 PM
To: "Grupo Ruby Argentina" <[email protected]>
Subject: Re: [RubyArg] Valores nulos en un bloque, utilizando sum


Sobre el query en sí, ActiveRecord te da un API "relativamente"
elegante (según cómo se lo mire) para no tener que escribir SQL a
mano. En particular, lo que vos querés, es hacer JOIN con un par de
tablas y filtrar por una condición, y quedaría así:

ClientMovement.all(:joins => [:inquiry, :client], :conditions => {
"clients.id" => params[:id] })

Entre otras cosas, esto te evita el SQL injection que te mencionaron,
y es mucho más fácil de leer. (El valor de :joins asume que
ClientMovement tiene una asociación "belongs_to :client" y "belongs_to
:inquiry". En caso de que fueran has_many, lo que le pasás es el
nombre de la asociación, por lo que sería :joins => [:inquiries,
:clients])

Lo que pasa es que ClientesMovimientos tiene una asociacion "belongs_to :solicitud" y Solicitud tiene una asociacion "belongs_to :cliente"
Es algo asi:
ClientesMovimientos
   ||
   ====>Solicitudes
                     ||
                     ===>Clientes
Asi que ruby me reto al hacer mas o menos como mi pequeña mente imagino que estaba bien: @clientes_movimientos = ClienteMovimiento.all(:joins => [:solicitud, :cliente],
     :conditions => {"clientes.id" => params[:id] })
Y me dijo en ingles ¨Association named 'cliente' was not found; perhaps you misspelled it?¨

Aunque se lo que dice, no se como darle ahora sin usar find_by_sql, y como me gusta todo lo que es mas al estilo ruby on rails, pregunto si pudieras decirme como seria en este caso. :)

Desde ya gracias.

P.D.: Perdona por mesclar ingles con español es que aunque leo e interpreto bien el ingles, me gusta mas el español jeje. Aunque le bajo con todo al ingles siempre que pueda.
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a