2011-11-06 15 views
5

यह एक साधारण क्वेरी की तरह लगता है लेकिन मैं इसे अभी तक नहीं कर सकता।उत्सुक लोडिंग एसोसिएशन लेकिन वापसी

मूल रूप से यह पदों वाली श्रेणियों की पुरानी अवधारणा को उबालता है। अपेक्षित संघों की जगह है, एक श्रेणी में कई श्रेणियां हैं जबकि एक पद एक श्रेणी से संबंधित है।

मैं आपको अपनी पोस्ट के साथ सभी श्रेणियों को पुनः प्राप्त लेकिन 10

कोई भी विचार करने के लिए पदों की संख्या सीमित करने के लिए करना चाहते हैं?

उत्तर

1

ऐसा कुछ नहीं है जो आप कच्चे एसक्यूएल के साथ कर सकते हैं क्योंकि LIMIT के कुल डेटासेट आकार पर हैं, कुछ भी नहीं।

एसक्यूएल द्वारा इसे पूरी तरह से करने का एकमात्र तरीका यह है कि आपके आने और फ़िल्टर होने पर फ़िल्टर में नकली आईडी कॉलम बनाना है, जो कुछ ऐसा है जो कार्यान्वयन के अनुसार डेटाबेस सर्वर पर अविश्वसनीय रूप से निर्भर है।

विकल्प सभी श्रेणियों और पदों को प्राप्त करते हैं और रिकॉर्डसेट को काटते हैं, या सभी श्रेणियां प्राप्त करते हैं और जोर्ज ने सुझाव दिया है कि इसे 10 पद मिलते हैं।

0

क्या आपको उन्हें एक SQL कथन में पुनर्प्राप्त करने की आवश्यकता है? या जब आपको उनकी आवश्यकता हो तो आलसी लोड करना ठीक है?

जो मामले में

Category.all 

अपने सभी श्रेणियों मिलता है, और उन के माध्यम से आगे बढ़ अपनी पोस्ट को बस

Category.all.each do |category| 
    category.posts.limit(10) 
end 

यह पर्याप्त नहीं होगा हो सकता है पाने के लिए होगा?

+0

मैं एन + 1 प्रश्नों से बचने की कोशिश कर रहा हूं, इस प्रकार यह वर्तमान में काम कर रहा है, लेकिन इसका मतलब यह है कि पृष्ठ को प्रस्तुत करने के लिए कई प्रश्न किए जाते हैं (मुझे लगता है) 1 क्वेरी में किया जा सकता है। –

+0

मुझे नहीं लगता कि दुर्भाग्यवश संभव होगा - जैसे, नील ने कहा - सीमा पूरी डेटासेट पर लागू होती है। आप संभवतः एक एसक्यूएल कथन (आपके डीबी और संस्करण के आधार पर) को सीमा के साथ सबक्वायरीज़ में पोस्ट एकत्रित कर सकते हैं - लेकिन यह संभवतः आपके डीबी के लिए एक समान मात्रा में प्रयास करने के लिए काम कर सकता है, हालांकि संभावित पठनीयता दंड के साथ। मैं एक डेटासेट में सभी डेटा प्राप्त करने का भी सुझाव नहीं दूंगा, और उसके बाद रूबी में इसे अपनी आवश्यकताओं के साथ काट लेंगे - जिसके परिणामस्वरूप प्रत्येक ऑब्जेक्ट के रूप में भारी प्रदर्शन होगा - और बहुत सारी अनावश्यक वस्तुओं को तुरंत चालू करने की आवश्यकता होगी। – Joerg

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