2008/7/7 Eduardo Trápani <[EMAIL PROTECTED]>:

> Lo que pasa es que las condiciones del where te recortan todo, son el último 
> filtro antes de llegar a rails.
> Entonces, si la condición nunca es cierta no viene nada.  Pero si es siempre 
> verdadera vas a matar a rails, porque va a tener que procesar un resultset 
> enorme.

Si la sb recibe algo como


SELECT users.*, addresses.* FROM users LEFT OUTER JOIN addresses ON
addresses.user_id = users.id and addresses.is_active = 1 WHERE NOT
addresses.address_id = null

No debería ser mucho peor que lo que vos propones. En otras palabras,
que pasa si mandás algo así:

User.find :all, :include => :addresses, :conditions =>
["addresses.is_active = 1 and (not null(addresse.address_id))"]

No se si es la sintaxis correcta pero esa es la idea.

> has_many :active_addresses, :class_name => :address, :conditions =>
> ['addresses.is_active = ?',@address_status]

El problema con ese enfoque es cuando se evalúa la variable, si
funciona igual que con named_scope, tendrías que usar un lambda para
que se evalúe cada vez que ejecutás el método correspondiente, pero en
ese caso por ahí es más simple definir un método, y usar un parámetro.

Saludos. Lucas.
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a