Как сделать заказ в запросе записей group_by в рельсах - PullRequest
0 голосов
/ 07 июня 2018

Это мой текущий код

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

Результаты этого:

Технология (родитель)

  • Ruby
  • Rails
  • Программирование

Теперь я хочу упорядочить 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 голосов
/ 07 июня 2018

Вы можете использовать метод 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

Он должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...