2011-10-29 13 views
14

की उत्सुक लोडिंग कृपया मेरी सहायता करें। मेरे पास कुछ मॉडल है जो अन्य मॉडल के साथ _many सहयोग है। उदाहरण के लिए: प्रोफ़ाइल => has_many: आँकड़े और आंकड़ा मॉडल के अंदर मैं कुछ गुंजाइश है:रेल 3 ActiveRecord स्कोप

scope last_ten, limit(10).order('online desc') 

और सवाल यह है कि मैं इस क्षेत्र के लिए उत्सुक लोड का उपयोग कर सकते है? मुझे प्रोफ़ाइल के आंकड़ों के हर रिकॉर्ड की आवश्यकता नहीं है। केवल scoped।

अब मैं उपयोग कर सकते हैं केवल

User.profiles.includes(:statistics) 

धन्यवाद।

उत्तर

19

के रूप में यहां विस्तार से बताया:

class Profile < ActiveRecord::Base 
    has_many :most_recent_stats, :class_name => 'Statistic', :order => 'online DESC', :limit => 10 
    ... 
end 

User.profiles.includes(:most_recent_stats) 
+0

उपरोक्त मामले के सभी आंकड़ों को प्रोफ़ाइल में लोड किया जाएगा अंतर्गत आता है में: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

यह एक कस्टम संबंध परिभाषित करने के लिए बेहतर है। उत्सुक लोडिंग सीमा में दस्तावेज़ के अनुसार त्याग दिया जाएगा http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html – nkm

+0

हाँ, अच्छी परिशुद्धता, वास्तव में वह लिंक है जो मैं – apneadiving

+7

प्रदान करता हूं और लोड करने का कोई तरीका नहीं है केवल आवश्यक रिकॉर्ड? ऐसा लगता है कि मेरे पास हमेशा एन + 1 समस्या होगी या सभी वस्तुओं को स्मृति में लोड किया जाएगा? और अगर मेरे पास हजारों से अधिक रिकॉर्ड हैं तो यह क्या होगा? मैं क्या कर सकता हूं ?! – ValeriiVasin

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