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.

È stato utile?

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ò.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top