Как сгруппировать коллекцию по столбцам с рельсами - PullRequest
12 голосов
/ 08 ноября 2011

Моя таблица именованных акций содержит product_id, color_id, storage_id and in_stock в виде столбцов.

Для данного товара я хочу сгруппировать все запасы по хранилищу, затем для каждого хранилища я хочу показать товар (цвет): in_stock

Как мне написать метод и как сделать?

Ответы [ 2 ]

25 голосов
/ 08 ноября 2011
<% Stock.all.group_by(&:storage).each do |storage, products| %>
  Storage: <%= storage %>
  <% products.each do |product| %>
    (<%= product.color_id %>): <%= product.in_stock %>
  <% end %>
<% end %>

Редактировать: обновлено для использования ERB и in_stock в качестве числа, а не логического столбца да / нет, а вместо color.name используется color_id, поскольку предполагается, что у вас есть отношение к цвету.

1 голос
/ 08 ноября 2011

Не структурировано именно так, как вам нужно (недостаточно информации из вашего поста), но что-то вроде этого возможно?

items = Stock.select('color_id, in_stock').group('stocks.storage_id').where(:product_id => foo)

items.each {|item| puts "(#{lookup_color(item.color_id)}): #{in_stock}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...