Rails,ruby,如何sorting一个数组?

在我的Rails应用程序中,我创build了一个数组,像这样:

@messages.each do |message| @list << { :id => message.id, :title => message.title, :time_ago => message.replies.first.created_at } end 

做完这个数组后,我想然后按time_ago ASC顺序sorting,这是可能的吗?

  @list.sort_by{|e| e[:time_ago]} 

它默认为ASC,但是如果你想要DESC,你可以这样做:

  @list.sort_by{|e| -e[:time_ago]} 

也似乎你正在试图从@messagesbuild立名单。 你可以简单地做:

 @list = @messages.map{|m| {:id => m.id, :title => m.title, :time_ago => m.replies.first.created_at } } 

你可以这样做:

 @list.sort {|a, b| a[:time_ago] <=> b[:time_ago]} 

你也可以做@list.sort_by { |message| message.time_ago } @list.sort_by { |message| message.time_ago }

只是供参考,我没有看到移动消息到一个新的列表,然后sorting他们的观点。 只要它是ActiveRecord它应该直接查询数据库在我看来。

看起来你应该可以这样做:

 @messages = Message.includes(:replies).order("replies.created_at ASC") 

除非我误解了目的,否则这应该就够了。

在铁轨4 +

 @list.sort_by(&:time_ago)