我有incoming packages
的集合,其中包含某个:product
和某个supplier
要按手风琴分类,无论是按供应商还是按产品分类,我发现这种方式可以提高DB速度:
控制器
def by_supplier
@incomings = ::Incoming::Product.all
@suppliers = @incomings.group_by(&:supplier)
end
def by_product
@incomings = ::Incoming::Product.all
@products = @incomings.group_by(&:product)
end
按供应商查看
<% @suppliers.each_pair do |supplier, incomings| %>
<h4 class="box-title">Supplier: <%= supplier.name %></h4>
</div>
<%= render "table", data: incomings %>
</div>
<% end %>
按产品划分的观看次数
<% @products.each_pair do |product, incomings| %>
<h4 class="box-title">Product: <%= product.name %></h4>
</div>
<%= render "table", data: incomings %>
</div>
<% end %>
这给了我这样的数据,例如供应商:
供应商:供应商A
- 传入A
- 传入D
- 传入F
供应商:供应商B
- 传入B
- 传入C
- 传入E
供应商:供应商C
- Incoming H
- 传入J
但现在我想分为2个级别。例如:
供应商:供应商A
产品:产品1
- 传入A
- 传入D
产品:产品2
- 传入F
供应商:供应商B
产品:产品1
- 传入B
产品:产品3
- 传入C
- 传入E
供应商:供应商C
产品:产品1
- Incoming H
产品:产品4
- 传入J
我怎样才能以DB高效的方式实现这一目标?
答案 0 :(得分:2)
分组依旧是一种红宝石方法,你可以再做一次。
<% @suppliers.each_pair do |supplier, incomings| %>
<h4 class="box-title">Supplier: <%= supplier.name %></h4>
<div>
<% incomings.group_by(&:product).each_pair do |product, product_incomings| %>
<h4 class="box-title">Product: <%= product.name %></h4>
<div>
<%= render "table", data: product_incomings %>
</div>
<% end %>
</div>
<% end %>
然后就这样做,但按产品供应商分组。