Hola, me ha surgido una duda acerca de las relaciones padre-hijos. Luego
de probar y renegar durante un rato bastante largo, me he percatado de
lo siguiente:
<file /app/models/factura.rb>
class Factura < ActiverRecord::Base
has_many :detalles
…
end
<file /app/models/detalle.rb>
class Detalle < ActiverRecord::Base
belongs_to :factura
…
end
<file /app/controllers/facturador.rb>
class FacturadorController < ApplicationController
def busca_articulo
@facturas = Factura.find(:all, :include => :detalles,
:conditions => [“detalles.articulo_id = ?”, 5], :order => “fecha”)
end
…
end
Luego, en la vista <file /app/views/facturador.rhtml>
<% for fac in @facturas %> <% for detalle in fac.detalles %> <% end %> <% end %>Fecha: <%= fac.fecha.to_s -%> Cliente: <%= fac.cliente.to_s -%> | ||
---|---|---|
<%= detalle.articulo.nombre %> | <%= detalle.cantidad %> | <%= detalle.precio %> |
O sea, quiero mostrar todas las facturas (con el detalle completo) que
incluyen un determinado artÃculo (en el ejemplo, el artÃculo 5).
Sin embargo, la linea que resalto en la vista no me devuelve todos los
detalles de una factura sino que solo el detalle que contiene el
artÃculo 5. ¿Por qué sucede eso?
Para que me funcione, es como que tengo que volver a buscar el objeto
Factura para que ahà sà realice las asociaciones que deseo; haciendo por
ejemplo:
for detalle in Factura.find(fac.id).detalles
en lugar de la linea antes mencionada.
¿Por qué si “fac” es del tipo “Factura” no ejecuta correctamente la
asociación “detalles” sino que solo me devuelve el registro que tiene el
artÃculo 5?
Por otro lado, si en el controlador quito la condición de que busque
facturas cuyos detalles incluyan al artÃculo 5, me funciona de
maravillas la vista.
Bueno, espero sus comentarios.
Saludos
Ariel Diaz B.
Analista en Computación
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
¡Abrà tu cuenta ya! - http://correo.yahoo.com.ar