我一直试图按顺序对数组进行排序,但一直遇到麻烦。
我有......
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] }
感谢一帮!
答案 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在排序时不适合我