2011-05-08 7 views
6

के सभी उदाहरण: उत्सुक लोडिंग के लिए क्लास-स्तरीय पूछताछ के लिए शामिल हैं। मैंने इसे अपने मॉडल उदाहरण पर आजमाया और यह अभी भी प्रश्नों का एक समूह जारी किया - क्या यह उदाहरण विधियों पर काम करता है?क्या: ActiveRecord उदाहरणों पर काम शामिल है?

#in controller 
@emails = person.sent_emails(:include => [:recipient]) 

#in view 
render @emails 

# _email.html.erb partial 
<h1><%= email.recipient.name %></h1> 
<p> 
<%= email.content %> 
</p> 

#still issues a select * for emails, N+1 for recipients :/ 
+2

आंशिक '_email' अंदर क्या है में एक बेहतर तरीका के लिए BaroqueBobcat द्वारा टिप्पणी देखते हैं? –

+0

इसे –

+2

पर प्रश्न में जोड़ा गया है यदि प्राप्तकर्ता उत्सुक नहीं है तो 'email.recipient' कॉल को 'उपयोगकर्ताओं से चुनें *' चलाया जाना चाहिए। क्या आप वाकई 'ईमेल * से कई बार' चुन रहे हैं? –

उत्तर

3

यह थोड़ा रेल लगता है 2ish मुझे पता है और बेहतर रेल 3 रास्ता हो सकता है लेकिन यह काम करता है।

@emails = person.sent_emails.find(:all, :include => :recipient) 

संपादित करें: रेल 3

+3

आप 'sent_emails.all (: include =>: प्राप्तकर्ता) ' – BaroqueBobcat

+0

प्रयुक्त BaroqueBobcat के वाक्यविन्यास का उपयोग कर सकते हैं - यही वह है जो मैं याद कर रहा था। धन्यवाद –

+0

ठीक है, इसलिए इस उदाहरण में मेरे पास एक व्यक्ति उदाहरण है। और मैं "person.sent_emails.all (: शामिल =>: प्राप्तकर्ता) कर सकता हूं"। और यह परिणाम मुझे अपेक्षित परिणाम देता है। लेकिन person.sent_emails चर अपरिवर्तित है। ActiveRecord इंस्टेंस के अंदर मैं इन संगठनों को कैसे लोड कर सकता हूं? – ancajic

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