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

>  @hosts = Host.find(:all, :joins => "inner join clientes as c on 
> c.id=hosts.cliente_id",
> :select => "hosts.*, c.nombre")
>
> => [#<Host id: 1, hostname: "mandala", cliente_id: 1, created_at:
> "2010-04-07 15:56:01", updated_at: "2010-04-07 15:56:01">, #<Host id: 2,
> hostname: "mancha", cliente_id: 1, created_at: "2010-04-07 15:56:08",
> updated_at: "2010-04-07 15:56:08">, #<Host id: 3, hostname: "mandril",
> cliente_id: 1, created_at: "2010-04-07 15:56:12", updated_at: "2010-04-07
> 15:56:12">, #<Host id: 4, hostname: "manifold", cliente_id: 1, created_at:
> "2010-04-07 15:56:17", updated_at: "2010-04-07 15:56:17">, #<Host id: 5,
> hostname: "mantarraya", cliente_id: 1, created_at: "2010-04-07 15:56:24",
> updated_at: "2010-04-07 15:56:24">]
>

Probé el caso y me funcionó (mapeaba "c.nombre" a "nombre"). Por las dudas,
probá poner "c.nombre AS nombre_cliente"...

Igual insisto, no lo hagas así, utilizá diferentes entidades.


> Me estoy volviendo loco... Les parece que sea un bug? Tengo muy poca
> experiencia en rails, pero no puede ser que no funcione este ejemplo tan
> chiquito... Encima está documentado el uso del :select en las páginas de la
> API correspondiente y dice que se usa así...


¿decís que en la documentación te dice de agregar columnas de otra entidad?
No encuentro algo así.

http://apidock.com/rails/ActiveRecord/Base/find/class

Idealmente, si usás el select, no indiques columnas que no estarían
indicadas sin usarlo (o sea, restringite a un subconjunto de las columnas de
la tabla propia de la entidad que estás consultando -- sino te devuelve un
frankestein). Se suele usar, por ejemplo, por si tenés un campo TEXT muy
grande y sabés a priori que no lo vas a usar (para evitar cargarlo en
memoria, ya que puede ser potencialmente grande).

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

Responder a