Otra alternativa....

Cliente.all( :joins => [ :solicitudes => :clientes_movimientos ],
:conditions => ["clientes_movimientos.saldos > 0"], :select =>
"distinct clientes.*" )

El día 24 de junio de 2010 17:06, Nestor Rodriguez
<[email protected]> escribió:
> Gracias lo voy a probar.
>
> Atte.
> Nestor
>
> --------------------------------------------------
> From: "Silvio Quadri" <[email protected]>
> Sent: Thursday, June 24, 2010 12:19 PM
> To: "Grupo Ruby Argentina" <[email protected]>
> Subject: Re: [RubyArg] El problema de quitar de un objeto tabla,otros
> objetos   tabla relacionados.
>
>> 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
>>
> _______________________________________________
> Ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a