![](/img/trans.png)
[英]Ruby on Rails: how do I sort with two columns using ActiveRecord?
[英]How do I sort in ruby/rails on two fields?
例如,我想按game_date排序,然后如果日期相同,則按團隊排序? 最好的方法是什么?
@teams = @user.teams
@games = @teams.reduce([]) { |aggregate, team| aggregate + team.games}.sort_by(&:game_date)
最好的方法是讓數據庫執行此操作,但是如果您想使用Ruby:
@games = @data.sort_by {|x| [x.game_date, x.team] }
Array
的排序行為是按第一個成員,然后第二個,然后是第三個成員進行排序,依此類推。 由於您希望將日期作為主鍵並將團隊作為第二個鍵,因此這兩個數組將按您想要的方式進行排序。
@teams = @user.teams
@games = @teams.games.order("game_date ASC, team ASC")
@teams = @user.teams
@games = @teams.games.order(game_date: :asc, team: :asc)
假設您有一個包含這兩個字段的模型
Model.all(:order =>'attribute1,attribute2')
如果字段在多個表中,則可以使用聯接。
對於那些希望對包含兩個不同對象(帶有不同名稱的日期字段)的數組進行排序的人,可以使用模型中的屬性別名方法來實現。
注意 :使用.sort_by! 破壞性地不起作用。
def release_date
self.publish_date
end
@grid_elements = @news + @albums
@grid_elements = @grid_elements.sort_by(&:release_date)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.