#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’ и т.д.