Rails ActiveRecord: выбор и сортировка в динамическом поле

#ruby-on-rails #activerecord

#ruby-on-rails #activerecord

Вопрос:

У меня есть две модели, одна — Group, другая Item.

В группе много элементов.

Я пытаюсь выполнить запрос по группам и вернуть количество элементов для каждой группы в качестве метода объекта group.

Представление должно быть :

 <% @groups.each do |group| %>
   <tr><td><%= group.name %></td><td><%= group.items_count %></td> ... and other fields
<% end %>
  

Я хотел бы иметь возможность выполнять вызов Group.where().page, включающий динамический атрибут items_count, и иметь возможность сортировать результаты по item_count, точно так же, как стандартный атрибут из таблицы sql. как я могу сделать это простым способом?

Комментарии:

1. Вы заглядывали в область видимости? Здесь также есть полезная информация

Ответ №1:

Вероятно, самый простой способ — это извлечь нужные вам группы без определенного порядка, а затем отсортировать их в вашем контроллере впоследствии:

 def my_action
  @groups = Group.all()  # or Group.where(...) for more specific filtering
  @groups.sort! { |g1, g2| g1.items_count <=> g2.items_count }
  ...
end
  

Комментарии:

1. Я надеялся, что смогу выполнить: @groups.all.sort(параметры [:sort_by]), где sort_by содержит ‘items_count’ или ‘group_name’ и т.д.