2012-05-30 105 views
0

我試圖按照desc順序對數組進行排序,但一直在這樣做。rails,按排序的屬性對數組排序

我有...

microposts = Micropost.from_users_followed_by(self) 
pub_messages = PubMessage.find_pub_messages_for(self.id) 
(microposts + pub_messages).sort! { |a,b| a[:time_ago] <=> b[:time_ago] } 

但最後一行返回升序排列的一切。做

.reverse 

修復它,但我聽說這樣做效率不高。我試圖做

(microposts + pub_messages).sort! { |a,b| -a[:time_ago] <=> -b[:time_ago] } 

,但它給出了一個錯誤,它無法找到 - 我想

(microposts + pub_messages).sort! { |a,b| b[:time_ago] <=> a[:time_ago] } 

@

,但它並沒有改變,要麼(我換B和A周圍)。我究竟做錯了什麼?在此期間,當我這樣做的方法

find_pub_messages_for and from_users_followed_by 

我做我的模特像

default_scope order: 'pub_messages.created_at DESC' 
default_scope order: 'microposts.created_at DESC' 

當我找回它們。然而,這是一種浪費?因爲在年底,即時通訊將它們分類基礎上再次微觀柱和pub_messages作爲線

(microposts + pub_messages).sort! { |a,b| a[:time_ago] <=> b[:time_ago] } 

感謝了一堆見過!

回答

1
(microposts + pub_messages).sort! { |a,b| b[:time_ago] <=> a[:time_ago] } 
+0

我忘了提爲我工作,我想這樣做太多,但它似乎並沒有改變任何東西。它仍然在按順序 – Sasha

+0

謝謝!尋求幫助! – Sasha

1

我終於得到它的工作。我不得不這樣做......

(microposts + pub_messages).sort! { |a,b| b[:created_at] <=> a[:created_at] } 

明顯:TIME_AGO沒有在分揀