Ruby on rails 按不同级别对Rails 4记录进行分类

Ruby on rails 按不同级别对Rails 4记录进行分类,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有一个传入包的集合,其中既有特定的:产品,也有特定的供应商 要按供应商或产品对其进行分类,我发现这种方法非常高效: 控制器 def by_supplier @incomings = ::Incoming::Product.all @suppliers = @incomings.group_by(&:supplier) end def by_product @incomings = ::Incoming::Product.all @products =

我有一个
传入包的集合
,其中既有特定的
:产品
,也有特定的
供应商

要按供应商或产品对其进行分类,我发现这种方法非常高效:

控制器

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 %>
供应商视图

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
  • 传入H
  • 传入J
但现在我想分为两个层次。例如:

供应商:供应商A
  • 产品:产品1
    • 传入A
    • 传入D
  • 产品:产品2
    • 传入F
供应商:供应商B
  • 产品:产品1
    • 传入B
  • 产品:产品3
    • 传入C
    • 传入E
供应商:供应商C
  • 产品:产品1
    • 传入H
  • 产品:产品4
    • 传入J

如何以DB高效的方式实现这一点?

GROUPBY只是一种ruby方法,您可以再次这样做

<% @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 %>

供应商:
产品:

然后也这样做,但按供应商对产品进行分组。

谢谢!比我想象的要简单。我应该自己想想:)