2012-05-14 15 views
6

यहाँ मेरी संघों हैं:रेल में एसोसिएशन के create_at कॉलम द्वारा क्रमबद्ध कैसे करें?

Class Post 
belongs_to :user 
has_many :favorites, :dependent => :destroy 
has_many :favoriters, :through => :favorites, :source => :user 
end 

Class User 
has_many :posts 
has_many :favorites, :dependent => :destroy 
has_many :favorited, :through => :favorites, :source => :post 
end 

Class Favorites 
belongs_to :user, :post 
end 

मैं पसंदीदा एसोसिएशन के created_at स्तंभ बनाकर उपयोगकर्ताओं की पसंदीदा पदों क्रमबद्ध करना चाहते हैं। हालांकि, पोस्ट made_at विशेषता द्वारा इस प्रकार, पसंदीदा बनाई गई_at विशेषता नहीं है। मैं create_at विशेषता पसंदीदा द्वारा कैसे क्रमबद्ध कर सकता हूं?

@[email protected]('created_at DESC') 
+0

आप अपने प्रश्न अलग तरीके से व्यक्त कर सकते हैं? – beck03076

उत्तर

15

आपको यह निर्दिष्ट करने की आवश्यकता है कि आप किस तालिका को खंड में क्रम में उपयोग करना चाहते हैं।

@posts = @user.favorited.order('posts.created_at DESC') 

इसे करना चाहिए।

एसोसिएशन का निरीक्षण करते समय रेल कंसोल का उपयोग करना एक अच्छी चाल है। विशेष रूप से, यह आपके द्वारा निष्पादित सक्रिय रिकॉर्ड क्वेरी पर 'to_sql' विधि का उपयोग करने में मदद करता है।

उदाहरण के लिए:

% bundle exec rails console 

> u = User.last 
> u.favorited.order('created_at DESC').to_sql 
+0

ग्रेट, यह काम करता है। हालांकि मेरे मामले में, इसके @posts = @ user.favorited.order ('Favorites.created_at DESC') ताकि वे create_at विशेषता पसंदीदा द्वारा क्रमबद्ध हों। सलाह के लिये धन्यवाद। –

+0

काफी सही काम नहीं कर रहा था, अधिक जानकारी के साथ एक संपादन किया –

3

सामान्य सेट करें आदेश के लिए अपने पद मॉडल में इस प्रयोग:

default_scope { order("created_at DESC") } 
संबंधित मुद्दे