2012-05-30 74 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没有在分拣