所以我有下表Sales
,具有多态关系:
---------------------------------- | id | product_id | product_type | ---------------------------------- | 1 | 45 | Rim::Entry | ---------------------------------- | 2 | 45 | Rim::Entry | ---------------------------------- | 3 | 23 | Tyre::Entry | ---------------------------------- | .. | ... | ... |
我希望能够遍历销售,并显示它们显示每种产品的销售量。这是我目前的部分内容:
<% @order.sales.???????.each do |sale| %>
<p>Product ID: <%= sale.product_id %></p>
<p>Product name: <%= sale.product.description %></p>
<p>Amount sold: <%= sale.??? %></p>
<% end %>
这是我希望输出结果的样本:
Product ID: 45
Product Name: Rim Model AAA
Amount sold: 2
Product ID: 23
Product Name: TyreZ model XYZ
Amount sold: 1
...
答案 0 :(得分:1)
如果您想要为每种产品销售的数量,您应该遍历产品,而不是销售。
<% Product.includes(:sales).each do |product| %>
<%= product.id %>
<%= product.sales.count %>
<% end %>
答案 1 :(得分:1)
您可以使用group_by
。
<% @order.sales.group_by { |s| s.product }.each do |product, sales| %>
<p>Product ID: <%= product.id %></p>
<p>Product name: <%= product.description %></p>
<p>Amount sold: <%= sales.count %></p>
<% end %>
答案 2 :(得分:0)
我找到了答案,即使我不确定它是最漂亮的还是:
<% @order.sales.group(:product_id).count.each_pair do |product_id, count| %>
<div class="product">
<% product = @order.sales.where(product_id: product_id).first %>
<p>Product_id: <%= product.product.description %></p>
<p>Amount: <%= count %></p>
</div>
<% end %>