2010/4/7 Lean <[email protected]>

> Digo:
>
> Host.find(:all, :include => [:cliente])
> y
> Host.find(:all, :joins => [:cliente])
>
> da exáctamente el mismo resultado. O sea, sólo las columnas de Host.
>

los objetos Host que te retornan son "los mismos" en el sentido de que no te
va a devolver un host que tiene el nombre de Cliente (y, sigo insistiendo, *no
querés que así sea*).

Particularmente en este caso, el caso de joins no agrega nada (por que el
joins sólo te "habilita" columnas para el :conditions), es como si no
estuviera la opción

Dicho de otra forma:

@hosts = Host.all
@hosts.each { |host| puts host.cliente.nombre }

genera N+1 query

@hosts = Host.all :include => :cliente
@hosts.each { |host| puts host.cliente.nombre }

genera 2 (DOS) queries: "eager loading" es :include

fijate que el código que utiliza la lista de hosts no cambia...

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

Responder a