[Ror-es] Añadir un campo de otra tabla en un modelo?

Damian Janowski damian.janowski at gmail.com
Wed Sep 27 14:49:47 GMT 2006


class Producto < ActiveRecord::Base
   has_many :etapas, :through => :etapas_productos, :order => :fase
   has_many :etapas_productos, :include => :etapas, :order => 'etapas.fase'
end

(las di vuelta)

On 9/27/06, Luis Villegas <luis.vilec at gmail.com> wrote:
>
> No leí correctamente lo que me pusiste en el mensaje y ya había escrito
> otro. Con tu solución ahora me dice
>  Association named 'etapas' was not found; perhaps you misspelled it?
>
>
>  Ya me ha dejado completamente perdido....
>
>
>
>
> ---------- Forwarded message ----------
> From: Luis Villegas < luis.vilec at gmail.com>
> Date: Sep 27, 2006 4:43 PM
> Subject: Re: [Ror-es] Añadir un campo de otra tabla en un modelo?
> To: "La lista sobre Ruby On Rails (rubyonrails.com ) en castellano"
> <ror-es at lists.simplelogica.net>
>
>
>
> Vaya lío nos estamos montando. Veamos...
>
> El problema es que si pido @producto.etapas_productos , me devuelve la lista
> con los datos que yo quiero pero sin ordenar por fase:
>
> #<EtapasProducto:0x39432cc @attributes={"etapa_id"=>"1",
> "producto_id"=>"66", "lead_time"=>"2"}>,
>  #<EtapasProducto:0x3943290 @attributes={"etapa_id"=>"2",
> "producto_id"=>"66", "lead_time"=>"3"}>,
> #<EtapasProducto:0x3943254 @attributes={"etapa_id"=>"9",
> "producto_id"=>"66", "lead_time"=>"4"}>,
> #<EtapasProducto:0x3943218 @attributes={"etapa_id"=>"11",
> "producto_id"=>"66", "lead_time"=>"1"}>,
>  #<EtapasProducto:0x39431dc @attributes={"etapa_id"=>"59",
> "producto_id"=>"66", "lead_time"=>"2"}>
> Y si pido pido @producto.etapas, me devuelve las etapas ordenadas, pero sin
> el dato que yo quiero, que es el lead_time:
>
>
> #<Etapa:0x3922edc @attributes={"titulo"=>"pruebaa a",
> "departamento_id"=>"4", "id"=>"59", "fase"=>"103"}>,
> #<Etapa:0x3922e50 @attributes={"titulo"=>"Emisi\363n de la
> Orden de Producci\363n", "departamento_id"=>"1", "id"=>"1", "fase"=>"110"}>,
> #<Etapa:0x3922e14 @attributes={"titulo"=>"Emisi\363n del
> Pedido de Compra", "departamento_id"=>"1", "id"=>"2", "fase"=>"120"}>,
> #<Etapa:0x3922d9c @attributes={"titulo"=>"Recepci\363n
> orden producci\363n por Almac\351n", "departamento_id"=>"7", "id"=>"9",
> "fase"=>"240"}>,
> #<Etapa:0x3922ce8 @attributes={"titulo"=>"Preparaci\363n
> Orden Componentes", "departamento_id"=>"7", "id"=>"11", "fase"=>"315"}> Como
> puedes ver, con la primera sentencia, vienen ordenadas por id y en la
> segunda por fase.
>
> Y con mis conocimientos rubyescos, no sé es cómo añadir al array "etapas" un
> campo nuevo que sea "fases".
>
> Seguro que es muy sencillo, pero no lo consigo.
>
>
>
>
>
>
>
> On 9/27/06, Damian Janowski < damian.janowski at gmail.com> wrote:
> > Ya estoy perdido :)
> >
> > A ver
> >
> > class Producto < ActiveRecord::Base
> >     has_many :etapas_productos, :include => :etapas, :order =>
> 'etapas.fase'
> >     has_many :etapas, :through => :etapas_productos, :order => :fase
> > end
> >
> > Si eso funciona (?), entonces sólo quedaría pedir
> > @producto.etapas_productos
> >
> >
> >
> > On 9/27/06, Luis Villegas < luis.vilec at gmail.com> wrote:
> > > Me parece que me estoy explicando mal...
> > >
> > > Sí que funciona si pongo @productos.etapas. Recupera correctamente las
> > > estapas asociadas a ese producto y ordenadas por fase, pero yo lo que
> quiero
> > > es recuperar también información de la tabla que sirve de union.
> > >
> > > En concreto el campo lead_time que está en la tabla ETAPAS_PRODUCTOS y
> no en
> > > la tabla ETAPAS
> > >
> > > Gracias
> > >
> > >
> > > On 9/27/06, Damian Janowski < damian.janowski at gmail.com> wrote:
> > > > Veo que la opción :order está puesta... no anda?
> > > > Quizás probá esto:
> > > > :order => 'fase'
> > > > Es decir, un string en vez de un symbol.
> > > >
> > > > Si no,
> > > >
> > > > @productos.etapas.sort_by { |e| e.fase }
> > > >
> > > > On 9/27/06, Luis Villegas < luis.vilec at gmail.com> wrote:
> > > > > Bueno, con eso recuperaría las fases asociadas a cada etapa.
> > > > >
> > > > > Lo que yo quiero realmente es que al recuperar las etapas asociadas
> al
> > > producto, también se recupere la fase de cada etapa o al menos poder
> ordenar
> > > cada etapa por su fase. Actualmente lo hago así, pero no me parece muy
> > > elegante.
> > > > >
> > > > >    query = "select fase, etapa_id,lead_time "
> > > > >     query << "from etapas e, etapas_productos ep "
> > > > >     query << "where e.id=etapa_id  and ep.producto_id =? "
> > > > >     query << "order by fase"
> > > > >     @etapas_productos = EtapasProducto.find_by_sql
> > > [query, at lote.producto_id]
> > > > >
> > > > > Muchas gracias por tu ayuda
> > > > >
> > > > > _______________________________________________
> > > > > Ror-es mailing list
> > > > > Ror-es at lists.simplelogica.net
> > > > >
> http://lists.simplelogica.net/mailman/listinfo/ror-es
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Damian Janowski
> > > > damian.janowski at gmail.com
> > > > _______________________________________________
> > > > Ror-es mailing list
> > > > Ror-es at lists.simplelogica.net
> > > > http://lists.simplelogica.net/mailman/listinfo/ror-es
> > > >
> > >
> > >
> > > _______________________________________________
> > > Ror-es mailing list
> > > Ror-es at lists.simplelogica.net
> > > http://lists.simplelogica.net/mailman/listinfo/ror-es
> > >
> > >
> > >
> >
> >
> > --
> > Damian Janowski
> > damian.janowski at gmail.com
> > _______________________________________________
> > Ror-es mailing list
> > Ror-es at lists.simplelogica.net
> > http://lists.simplelogica.net/mailman/listinfo/ror-es
> >
>
>
> _______________________________________________
> Ror-es mailing list
> Ror-es at lists.simplelogica.net
> http://lists.simplelogica.net/mailman/listinfo/ror-es
>
>
>


-- 
Damian Janowski
damian.janowski at gmail.com


More information about the Ror-es mailing list