ruby-on-rails - 如何在rails中的group_by记录查询中进行排序
问题描述
这是我当前的代码
cat = Category.select(:id, :name, :parent, :jobs_count).group_by{|p| p.parent}
cat.each do |parent, childs|
= parent
childs.each do |name|
= name.name
end
end
结果是,
技术(父)
- 红宝石
- 导轨
- 编程
现在我想通过 订购childs
记录jobs_count
,我正在尝试使用下面的代码,
childs.order(jobs_count: :desc).each do |name|
Error:
=> undefined method `order' for #<Array:0x007f11cc08a2c0>
也喜欢进入主查询
Category.select(:id, :name, :parent, :jobs_count).group_by{|p| p.parent}.order(jobs_count: :desc)
Error:
#=> undefined method `order' for #<Array:0x007f11cc242e50>
它对我不起作用,我该如何订购记录jobs_count
解决方案
您可以sort_by
在childs.each
块上使用如下方法
childs.sort_by{|j| - j.jobs_count }.each do |name|
所以完整的代码是:
cat.each do |parent, childs|
= parent
childs.sort_by{|j| - j.jobs_count }.each do |name|
= name.name
end
end
它应该工作。
推荐阅读
- windows - 脚本 .bat 用于消除 Windows 桌面上的所有文件和文件夹(不包括一些)
- php - 无法从 XML 检索所有节点
- reactjs - 使用控制器组件,在 TextField 中显示标签需要什么?
- javascript - 如何使用返回任何元素数组的渲染函数对 Vue.js 功能组件进行单元测试?
- java - Spring Data JDBC:DataRetrievalFailureException:无法将 [oracle.sql.ROWID] 转换为 [java.lang.Number]
- mongodb - 可以使用 CLI 对 docker mongo 实例进行身份验证,但不能通过任何其他方式
- ef-core-2.0 - 导航属性未评估 EF Core
- docker - docker nginx + php-fpm:环境变量在控制台上工作但不在脚本中
- python - 我们可以伪造`os.sysconf('SC_NPROCESSORS_ONLN')`的结果吗?
- java - 在具有不同索引和大小的arraylist上添加不重复的元素