2011-03-06 30 views
6

मुझे नहीं लगता कि सक्रिय रिकॉर्ड और डेटा खोजने पर कोई अंतर होता है।संबंधों के बीच और कहां के बीच अंतर

यहाँ मेरी मॉडल

class User < ActiveRecord::Base 
    has_many :shows 
end 

class Show < ActiveRecord::Base 
    belongs_to :user 
end 

जब मैं रेल सांत्वना मैं क्या कर सकते हैं निम्न का उपयोग कर रहे हैं और यह काम करता है।

u = User.find(1) 
u.shows 

यह मुझे उस उपयोगकर्ता के लिए सभी शो देता है।

हालांकि जब मैं

u = User.where("username = ?", "percent20") 
u.shows # this is doesn't work gives me a now instance error 

मैं एक ही उपयोगकर्ता और प्रासंगिक जानकारी है, लेकिन नहीं संबंध मिलता है। एकमात्र समस्या जो मैं देख सकता हूं वह शायद कुछ गलत कर रहा है क्योंकि कहां और ढूंढने के बीच कुछ अंतर है।

किसी भी मदद की सराहना की है।

उत्तर

10

समस्या का संबंध नहीं है। > [उपयोगकर्ता, उपयोगकर्ता, उपयोगकर्ता]

उपयोग जैसे -

u = User.find(1) 

रिटर्न एक उपयोगकर्ता

#return a Set of users. In your case its only one user. 
u = User.where("username = ?", "percent20") 

परिणाम प्रकार ActiveRecord :: संबंध है पहले पहले उपयोगकर्ता पाने के लिए

#returns the first user 
u = User.where("username = ?", "percent20").first 

u.class.name => "उपयोगकर्ता"

+1

मैं इस पढ़ने के बाद वास्तव में गूंगा लग रहा है। मैं यह जानता था, grrrrrrr। उत्तर की क्रियाशक्ति के कारण इसे उत्तर के रूप में चिह्नित कर रहा हूं। सभी उत्तरों के लिए धन्यवाद। – percent20

5

User.find (1) अपनी आईडी के साथ एक विशिष्ट रिकॉर्ड पुनर्प्राप्त कर रहा है, जबकि User.where ("username =?", "प्रतिशत20") स्थिति से मेल खाने वाले रिकॉर्ड के सेट को पुनर्प्राप्त कर रहा है।

प्रयास करें:

u = User.where("username = ?", "percent20").first 
u.shows 
3

जहां विधि है कि वस्तुओं की एक सरणी देता है। तो, अपने मामले में

u.each { |user| user.shows } 
संबंधित मुद्दे