简体   繁体   English

如何在rails中的group_by记录查询中进行订购

[英]How to make order in group_by records query in rails

This is my current code 这是我当前的代码

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

the results of this are, 结果是

Technology (The parent) 技术 (父级)

  • Ruby 红宝石
  • Rails 轨道
  • Programming 程序设计

Now I want to order childs records by jobs_count , I am trying to do it using the code below, 现在,我想按jobs_count排序childs记录,我正在尝试使用下面的代码来实现,

childs.order(jobs_count: :desc).each do |name|
Error:
=> undefined method `order' for #<Array:0x007f11cc08a2c0>

also like that into main query 也像这样进入主查询

Category.select(:id, :name, :parent, :jobs_count).group_by{|p| p.parent}.order(jobs_count: :desc)
Error:
#=> undefined method `order' for #<Array:0x007f11cc242e50>

It not working for me, how can I order the records by jobs_count 它对我不起作用,如何按jobs_count排序记录

You can be using sort_by method like on the childs.each block like the following 您可以像在childs.each块上一样使用sort_by方法,如下所示

childs.sort_by{|j| - j.jobs_count }.each do |name|

So the full code is: 因此,完整的代码是:

cat.each do |parent, childs|
   = parent
   childs.sort_by{|j| - j.jobs_count }.each do |name|
     = name.name
   end
end

It should work. 它应该工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM