如何在rails中的group_by记录查询中进行排序

时间:2018-06-06 21:28:39

标签: ruby-on-rails ruby

这是我目前的代码

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

订购记录

1 个答案:

答案 0 :(得分:3)

您可以像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

它应该有用。