首页 > 解决方案 > 如何在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

标签: ruby-on-railsruby

解决方案


您可以sort_bychilds.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

它应该工作。


推荐阅读