Как группировать коллекцию по столбцам с рельсами
Моя таблица с именами содержит product_id, color_id, storage_id and in_stock
в качестве столбцов.
Для данного продукта я хочу сгруппировать все запасы с помощью хранилища, затем для каждого хранилища я хочу показать продукт (цвет): in_stock
Как написать метод и как сделать?
Ответы
Ответ 1
<% 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 как число, а не логический столбец yes/no, и используйте color_id вместо color.name, потому что это предполагает, что вы имеете отношение к цвету.
Ответ 2
Не структурировано точно, как вам это нужно (недостаточно информации со своего поста), но что-то вроде этого возможно?
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}"