如何在两个字段中对ruby/rails进行排序?

Kam*_*i81 35 ruby ruby-on-rails

例如,我想按game_date排序,然后如果日期相同,按团队排序?最好的方法是什么?

@teams = @user.teams
@games = @teams.reduce([]) { |aggregate, team| aggregate + team.games}.sort_by(&:game_date)
Run Code Online (Sandbox Code Playgroud)

Dan*_*man 99

最好的方法是让你的数据库这样做,但如果你想使用Ruby:

@games = @data.sort_by {|x| [x.game_date, x.team] }
Run Code Online (Sandbox Code Playgroud)

排序行为Array是按第一个成员排序,然后排序第二个,然后排序第三个,依此类推.由于您希望将日期作为主键,将团队作为第二个,因此这两个数组将按您希望的方式排序.

  • 有没有办法为每个键指定方向? (4认同)

dem*_*mas 25

@teams = @user.teams
@games = @teams.games.order("game_date ASC, team ASC")
Run Code Online (Sandbox Code Playgroud)


Adr*_*ann 6

@teams = @user.teams 
@games = @teams.games.order(game_date: :asc, team: :asc)
Run Code Online (Sandbox Code Playgroud)