如何使用rails对列进行分组

时间:2011-11-08 05:00:53

标签: ruby-on-rails-3 group-by

我的名为stocks的表包含product_id, color_id, storage_id and in_stock列。

对于给定的产品,我想通过存储对所有库存进行分组,然后对于每个存储,我想要显示产品(颜色):in_stock

我应该如何编写方法以及如何渲染?

2 个答案:

答案 0 :(得分:24)

<% 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_id代替color.name,因为这假设您与颜色有关系。

答案 1 :(得分:1)

没有完全按照你的需要构建(你的帖子中没有足够的信息),但这可能是这样的吗?

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}"