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

Ruby on rails 如何在ruby/rails中对两个字段进行排序?,ruby-on-rails,ruby,Ruby On Rails,Ruby,例如,我想按游戏日期排序,如果日期相同,则按团队排序?最好的方法是什么 @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] } 数组的排序行为是按第一

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

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

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

假设您有一个包含这两个字段的模型

@teams = @user.teams
@games = @teams.games.order("game_date ASC, team ASC")
Model.all(:order=>attribute1,attribute2)


如果字段位于多个表中,则可以使用联接。

对于那些希望对包含两个不同对象的数组进行排序的人,可以使用模型中的属性别名方法进行排序

注意:使用.sort\u by!破坏性的不起作用

新闻网 控制器
问题是,一个用户有很多团队,一个团队有很多游戏,所以我不知道如何向下导航到游戏级别,所以我不知道如何在db级别上执行此操作?是否也有方法指定每个键的方向?@daniel pittman谢谢!您还可以按几个键进行排序
@games=@data.sort|u by{| x,y |[x.games_date,y.name]}
@teams是一个数组或一个关系。它是如何有一个“游戏”方法的?嘿,谢谢你的回答,它通过使用@service\u history=@vehicle.services.order(“closed ASC,date\u closed DESC”)解决了我的问题,它处理的是先放nils,然后放DESC date。我认为这样更好,因为如果可能的话,它将使用SQL顺序,这比对数组排序更快,并且更适合分页。对吧?这是个错误。
def release_date
    self.publish_date
end
@grid_elements = @news + @albums
@grid_elements = @grid_elements.sort_by(&:release_date)
@teams = @user.teams 
@games = @teams.games.order(game_date: :asc, team: :asc)