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