簡體   English   中英

Rails,Ruby,如何對數組進行排序?

[英]Rails, Ruby, how to sort an Array?

在我的rails應用程序中,我正在創建一個這樣的數組:

@messages.each do |message|

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

在制作這個數組之后,我想通過time_ago ASC命令對它進行排序,這可能嗎?

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

它默認為ASC,但是如果你想要DESC,你可以這樣做:

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

此外,您似乎正在嘗試從@messages構建列表。 你可以簡單地做:

@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]}

在軌道4+

@list.sort_by(&:time_ago)

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

僅供參考,我沒有看到將消息移動到新列表然后對它們進行排序的重點。 只要它是ActiveRecord就應該在我看來查詢數據庫時直接完成。

看起來你應該能夠這樣做:

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

除非我誤解了目的,否則這應該足夠了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM