2011-12-18 13 views
8

मुझे किसी विशिष्ट उपयोगकर्ता से सभी पोस्ट पूछने की आवश्यकता है और टिप्पणी के लिए सभी टिप्पणियां और उपयोगकर्ता शामिल हैं।रेल में नेस्टेड रिलेशनशिप शामिल हैं

class User < ... 
    has_many :posts 
    has_many :comments 
end 

class Post < ... 
    belongs_to :user 
    has_many :comments 
end 

class Comment < ... 
    belongs_to :user 
    belongs_to :post 
end 

@posts = current_user.posts.include(:comments) 

टिप्पणी उपयोगकर्ता भी प्राप्त करना संभव है? मैं कई पदों और टिप्पणियों की सूची देता हूं। मैं प्रत्येक टिप्पणी उपयोगकर्ता से पूछना नहीं चाहता हूं।

Thx/टोबियास

उत्तर

26

प्रयास करें

@posts = current_user.posts.includes(:comments => :user) 

इसके बारे में और अधिक पढ़ें here

+1

यह संभव इस क्वेरी में टिप्पणी सीमित करने के लिए है। मैं केवल 5 नवीनतम टिप्पणियों को शामिल करना चाहता हूं। अगर मैं lop shout.comments.limit (5) एक नई क्वेरी चलाती है – sandelius

+1

मेरे उत्तर में: 'पोस्ट है_मनी: टिप्पणियां,: शामिल => [: उपयोगकर्ता],: सीमा => 5' – clyfe

+0

हाँ लेकिन मैं भी नहीं चाहता एक पृष्ठ पर सभी टिप्पणियों को लाने के लिए, या यहां तक ​​कि उन्हें परेशान भी? – sandelius

10

कैसे के बारे में संबंध परिभाषा बयान में शामिल हैं?

: शामिल
निर्दिष्ट दूसरे क्रम संघों कि लोड उत्सुक होना चाहिए जब इस वस्तु भरी हुई है।

class Post < 
    belongs_to :user 
    has_many :comments, :include => [:user], :limit => 5 
end 
+1

ऐसा लगता है: शामिल नहीं है एक मान्य विकल्प (कम से कम रेल 4.1 के साथ नहीं), क्या कोई विकल्प है? – FeifanZ

+0

@FeifanZ इसे 'शामिल' होना चाहिए। यह ठीक काम करना चाहिए – ahnbizcad

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