rails,根据desc顺序的属性对数组进行排序

时间:2012-05-30 21:46:27

标签: ruby-on-rails sorting

我一直试图按顺序对数组进行排序,但一直遇到麻烦。

我有......

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'
当我检索它们时,在我的模型中

然而这是浪费吗?因为最后,我根据两个 microposts和pub_messages再次对它们进行排序,如行

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

感谢一帮!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我终于开始工作了。我不得不......

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

显然:time_ago在排序时不适合我