2012-11-27 11 views
5

मेरे संघों इस तरह हैं:रेल नेस्टेड एन 1 क्वेरी जारी करना

vendor has shipments 
shipment has order 
order has products 

मेरे नियंत्रक में मैं

@shipments = @vendor.shipments.includes(:order) 

के रूप में लिखा है लेकिन मेरे विचार में मैं जैसे

shipment.order.products.collect(&:name) 
उपयोग कर रहा हूँ

तो यह रेल के बुलेट 'मणि

द्वारा एन + 1 क्वेरी समस्या वापस कर रहा है 10

कोई भी मुझे नेस्टेड एन + 1 क्वेरी समस्या की इस समस्या को हल करने में मदद करता है? मुझे नियंत्रक में कैसे लिखना है?

उत्तर

9
@shipments = @vendor.shipments.includes(:order => :products) 

काम करना चाहिए। इसके बारे में और पढ़ें http://guides.rubyonrails.org/active_record_querying.html#nested-associations-hash

+0

धन्यवाद बहुत नैश..यह काम कर रहा है। इससे पहले मैंने @ vendor.shipments.includes (: order => (: include =>: products)), आदि का प्रयास किया है .. लिंक साझा करने के लिए एक बार फिर धन्यवाद। – Abhi

+0

खुशी हुई यह मदद की! –

संबंधित मुद्दे