2013-01-11 27 views
5

पर आइटम की इस पृष्ठ की सूची को दिखाएं रेल ऐप में मेरे पास तीन मॉडल हैं (पोस्टिंग, शॉप :: आइटम और निर्देशिका :: आइटम)। प्रत्येक मॉडल में अन्य मॉडल (उपयोगकर्ता, श्रेणी, शहर ...) के साथ संबंध हैं। यह सारी जानकारी मुझे मुख्य पृष्ठ पर दिखाना है। यह वस्तुओं की पेजिनेटेड सूची की तरह दिखना चाहिए। मैं डीबी के लिए पोस्टग्रेस का उपयोग कर रहा हूँ।
हम अपने नियंत्रक में इस तरह के कोड लिख सकते हैं:रेल ऐप। कई मॉडलों से वस्तुओं को एकत्रित करें और मुख्य पृष्ठ

@postings = Posting.includes(:category, :subcategory, :user, :city).all 
@directory_items = Directory::Item.includes(:category, :user, :city).all 
@shop_items = Shop::Item.includes(:category, :user, :city, :phone).all 

और इस परिणाम को सॉर्ट। लेकिन यह सबसे अच्छा तरीका नहीं है।

दूसरा समाधान सक्रिय क्वेरी को सक्रिय करने के लिए कस्टम क्वेरी लिखना है। लेकिन यह प्रश्न वास्तव में बड़ा है और इसे समर्थन देना मुश्किल होगा (हमारे पास बहुत सारे शामिल हैं)
डीबी प्रश्नों की सबसे छोटी राशि के साथ इसका सबसे अच्छा समाधान क्या है? (यह मुख्य पृष्ठ है, इसलिए इसे वास्तव में तेज़ काम करना चाहिए)।

+0

हमें कुछ कोड दिखाएं। [आपने क्या प्रयास किया है?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) – weltschmerz

+0

मैंने कुछ विचार जोड़े हैं कि इसे कैसे कार्यान्वित किया जा सकता है। लेकिन मुझे उन समाधान पसंद नहीं हैं। यही कारण है कि सवाल पूछना। – jizak

उत्तर

2

कुछ ऐसे समाधान हैं जो here में तेज़ नहीं हैं।

वैकल्पिक रूप से आप sphinxthinking sphinx मणि के साथ उपयोग कर सकते हैं। इस तरह यह तेज़ और साफ होगा।

ThinkingSphinx.search classes: [Posting, Shop::Items, Directory::Items], page: params[:page] || 1, per_page: 10 
0

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

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

  • कोई संबंधित समस्या नहीं^_^