Come stampare tutti gli elementi che belongs_to questa tabella
-
02-10-2019 - |
Domanda
Ok, io non sono sicuro che il mio titolo era abbastanza chiaro, ma cercherò di spiegare
Ho due tabelle: ordini che gli elementi has_many e gli elementi che belongs_to ordini. Ho appena iniziato a imparare RoR e bloccato con un compito semplice. Tutto quello che voglio è quello di gli ordini di visualizzazione e gli elementi correlati come questo:
Ordine 1:
Articolo 1
Articolo 2
Ordine 2:
Articolo 1
Articolo 2
...
So come visualizzare ordini o articoli separatamente, io so come visualizzare gli ordini voci (item.order.id), ma come visualizzare gli ordini e gli elementi nella tabella come sopra? Nel modello in cui visualizzo ordini ho potuto passare attraverso ogni elemento ogni iterazione e la paragono order_id estero con order.id, ma che sarebbe imbarazzante. Sto supponendo che dovrei ottenere gli elementi in una sorta di hash multidimensionale dove la chiave sarebbe order_id e quindi ho potuto solo fare riferimento a questo hash per ordine id e ottenere tutti gli elementi in essa, ma non sono sicuro che sia corretta.
Spero che quello che ho scritto qui è comprensibile.
Soluzione
Quando si definisce una relazione has_many
, si ottiene automaticamente i metodi di consultare tali oggetti. In questo caso, il metodo order.items
.
Così si può fare:
Order.find_each do |order|
puts "Order #{order.id}:"
order.items.each do |item|
puts "Item #{item.id}"
end
end
(io ho usato find_each metodo, che è disponibile da Rails 2.3+ . È possibile utilizzare un semplice Order.all.each
però.