I would be very interested in a solution, too. We have similarly complex compositions in our domain model.
Gernot On 5 Okt., 15:25, George <[email protected]> wrote: > FWIW In a recent project managed to circumvent this problem by > querying and pre-fetching all child items before starting the outer > loop(s). (I hope there's a simpler way!) > > As I recall it would mean your code would look something like this: > (untested) > > # Coax DM into preloading collections: > customers = Customer.all(:limit => 3) > customers.orders.reload > customers.orders.order_lines.reload > > #For items you may need to prepare something like: > item_ids = customers.orders.lines.map{|l| l.item_id } > items = Item.all( :id => item_ids ) > > # Then try your original loops with a slight tweak for item.sku: > customers.each do |c| > c.orders.each do |o| > o.order_lines.each do |ol| > a = "#{c.name}: #{o.reference} #{ol.quantity} x > #{ items.first(:id => ol.item_id).sku }" > end > end > end > > Food for thought anyway. Hopefully a more DM-savvy reader can improve > on this. > George > > On Sep 30, 8:24 am, Marcel Hild <[email protected]> wrote: > > > > > Hi, > > I recreated the model found > > athttp://datamapper.org/docs/find#nested_conditions > > When I want to print out all Customers with all Orders, including > > OrderLines and everything, > > Datamapper eager loads the first association (Customer.orders) but for > > the rest > > it will issue n queries. > > > I created a gist which shows it athttp://gist.github.com/604156 > > > Is there a way to have more control of what is loaded or should I fire > > the query differently? > > > thanks for any input > > > marcel -- You received this message because you are subscribed to the Google Groups "DataMapper" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/datamapper?hl=en.
