簡體   English   中英

如何在兩個字段中對紅寶石/鐵礦石進行分類?

[英]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! 破壞性地不起作用。

新聞.rb

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.

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