Cómo imprimir todos los elementos que belongs_to esta tabla
-
02-10-2019 - |
Pregunta
Ok, no estoy seguro de que mi título era lo suficientemente claro, pero voy a tratar de explicar
Tengo dos tablas: Ordena que elementos has_many y artículos que belongs_to órdenes. Acabo de empezar a aprender RoR y pegado con una tarea sencilla. Todo lo que quiero es órdenes de presentación y elementos relacionados, como la siguiente:
Orden de 1:
Artículo 1 |
Artículo 2
Orden 2:
Artículo 1 |
Artículo 2
...
Yo sé cómo mostrar órdenes o elementos por separado, sé cómo mostrar artículos pedidos (item.order.id), pero la forma de mostrar los pedidos y artículos en la tabla como la de arriba? En la plantilla, donde exhibo órdenes Podría seguir a través de cada elemento de cada iteración y compararlo con order_id extranjera order.id, pero eso sería incómodo. Estoy suponiendo que debo conseguir artículos en una especie de picadillo multidimensional en clave sería order_id y luego tan sólo pudiera hacer referencia a este hash por orden Identificación y obtener todos los artículos en ella, pero no estoy seguro de que es correcta.
Espero que lo que he escrito aquí es comprensible.
Solución
Cuando se define una relación has_many
, se obtiene automáticamente los métodos de la consulta de dichos objetos. En este caso, la order.items
método.
Por lo que puede hacer:
Order.find_each do |order|
puts "Order #{order.id}:"
order.items.each do |item|
puts "Item #{item.id}"
end
end
(I utiliza find_each método , que está disponible en rieles 2.3+ . Se puede usar un Order.all.each
sencilla sin embargo.