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

@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的排序行为是按第一个成员、第二个成员、第三个成员进行排序,依此类推.因为您希望日期作为主键,团队作为第二个键,所以这两个元素的数组将按您希望的方式排序.

Ruby-on-rails相关问答推荐

在VP中部署rails 7和nginx

使用ImportMaps将HighLightJS添加到rails 7.1

如何从 Rails7.2 中的控制器获取名称空间?

一对多关联 counter_cache 在 Rails 中无法正确重新加载

Rails 7,Hotwire 动态表单,更新值不起作用

复制我的活动时,活动描述没有复制过来

在 Rails 7 中,可以将导入映射与 js Bundle 解决方案一起使用,还是它们是专有的?

如何在 Ruby on Rails 中正确存储 BigDecimal

在 Rails 中将毫秒转换为格式化日期

上传图片 Ruby on Rails

使用devise gem点击确认链接后避免登录?

适合mysql比较的Ruby datetime

Rails 3 中的猴子补丁

如何在 rspec 测试中输出变量?

如何在 Rails 1.2.3 中使复选框默认为选中?

我如何找出为什么我不能#destroy() 记录?

Ruby gem 命名约定

Rails SQL 正则表达式

如何为 Rails 迁移定义布尔字段

警告:运行 ruby​​ 或 gem 命令时不安全的世界可写目录