El día 24 de junio de 2010 16:04, Nestor Rodriguez
<[email protected]> escribió:
> Bueno me voy a explicar, tengo estas tablas y sus relaciones
>
> Clientes
> ||
> ||>>> Solicitudes
> ||
> ||>>>>ClienteMovimiento
>
> Yo voy a aplicar un criterio a ClienteMovimiento y por supuesto me va a
> devolver un objeto @clientes_movimientos conteniendo todos los objetos fila.
> @clientes_movimientos = ClienteMovimiento.find(:all, :conditions => "saldo >
> 0")
>
> Yo quisiera quitar por la relación que existe entre las tablas algo como
> esto
>
> @clientes = @clientes_movimientos.solicitudes.clientes.all
>
> Es decir todos los clientes que por relación con ClienteMovimiento esten
> incluidos dentro del filtro, por relación en cascada.
>
> Se que así no funciona pero por lo menos me doy a entender, le doy vueltas y
> no encuentro como hacerlo, estoy un poco perdido en cuanto a conceptos de
> como maneja active record las tablas, pero le estoy dando duro a la
> lectura, pero me urge resolver este problema.
>
> Si alguno de ustedes puede ayudar por favor!!
>
> Gracias.
> Néstor
>
Si lo querés a lo bruto (te lo dejo para que lo mejores!)
ClientesMovimientos.find(:all).collect{ |cm| cm.solicitud.cliente }.uniq
Si lo querés optimizado, dejalo al motor de base de datos que lo haga ...
Cliente.find(:all, :conditions => "( exists ( select 1 from
clientes_movimientos a, solicitudes b bla bla bla ) )" )
--
Silvio Quadri
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar