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

Luis Villegas luis.vilec at gmail.com
Wed Sep 27 14:50:13 GMT 2006


Vaaaaale, puse :etapa en vez de :etapas en la solución que me diste:

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

pero ahora me dice que no encuentra etapas_productos.id, lo que es normal ya
que mi tabla sólo tiene: etapa_id , producto_id y lead_time, por lo que su
primary key es etapa_id y producto_id.

¿Alguna pista de cómo se dice al modelo que la primary key son 2 campos en
vez del típico id?


Oye y muchísimas gracias por tu ayuda, eres todo un crack.

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
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.simplelogica.net/pipermail/ror-es/attachments/20060927/e2b60d71/attachment-0001.htm 


More information about the Ror-es mailing list