在各种级别上分类Rails 4记录

时间:2016-03-16 12:30:22

标签: ruby-on-rails activerecord

我有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高效的方式实现这一目标?

1 个答案:

答案 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 %>

然后就这样做,但按产品供应商分组。