2012-03-10 15 views
39

मैं विभिन्न देशों से उन है और उन पर पाता प्रदर्शन करने के लिएरेल: मेरे एप्लिकेशन में स्थिति

मैं सूचकांक कार्रवाई

@fromcanada = User.find(:all, :country => 'canada') 

में इस तरह यह करने की कोशिश की, लेकिन मैं चाहता हूँ मिल गया के साथ सभी का पता लगाएं त्रुटि

Unknown key: country 

हालांकि, जिससे मुझे पूछने के लिए प्रेरित किया जाता है, क्या कुंजी बन सकती है? मेरे डेटाबेस स्कीमा फ़ाइल में, मेरे पास उपयोगकर्ता तालिका पर "देश" कॉलम है।

t.string "country" 

इसके अलावा, जब मैंने किया था एक सब

@users = User.all 

मुझे क्या करना इस

<%= user.country %></p> 

आप व्याख्या कर सकते हैं शर्तों के साथ क्यों मेरे खोजने सब काम नहीं किया कर रहा था लगता है? और मुझे दिखाओ कि मुझे यह कैसे करना चाहिए था?

+1

रेल का आप किस संस्करण का उपयोग कर रहे हैं? – James

+3

'@fromcanada = उपयोगकर्ता। कहीं (देश => 'कनाडा')। सभी 'शायद बेहतर शैली होगी। –

+0

@muistooshort क्यों 'सभी' की आवश्यकता है? जब आप 'user.all' को कॉल करते हैं तो आपको सभी उपयोगकर्ता मिलते हैं लेकिन जब आप उपयोगकर्ताओं को' कहां '(नौसिखिया प्रश्न के लिए खेद है) –

उत्तर

67

इसे आजमाएं।

@fromcanada = User.find(:all, :conditions => { :country => 'canada' }) 

संपादित करें: रूप jason328 ने कहा, इसके बाद के संस्करण जवाब 3.2 में हटाई गई है, और एक अद्यतन जवाब

@fromcanada = User.where(:country => 'canada') 
30

मामले में कोई भी टिप्पणी पढ़ने होगा। एक बेहतर प्रारूप

@fromcanada = User.where(country: 'canada').all 

पिछले उत्तर का कोड 3.2 में बहिष्कृत किया जा रहा है।

और रेल 4 का उपयोग करने वालों के लिए, all विधि को हटाने के लिए पर्याप्त होगा।

@fromcanada = User.where(country: 'canada').to_a 

ध्यान दें कि to_a क्वेरी को एक सरणी प्रारूप में कॉल करता है।

+3

रिलेशनशिप # का यह उपयोग रेलों में सभी को हटा दिया गया है 4. यदि आप चाहते हैं उत्सुक भार के लिए, बस 'लोड' के साथ 'all' को प्रतिस्थापित करें। अन्यथा आपको 'सभी' की भी आवश्यकता नहीं है। आपका जवाब गलत नहीं है। मैं सिर्फ रेल 4 पर इंतजार कर रहा हूँ। – courtsimas

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