2016-04-13 4 views
0

は、だから私は、次の表Salesを持って合計しながら、クエリをループ:Railsの4 - グループ化と多型の関係で、

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

何をしようとする手の込んだしてください。私は文章を理解できません。 '私はそれらの周りを回ることができるようにしたいので、私はこの部分(またはこれに類するもの)を使うことができます。これは変更できます。' – Aleks

+0

私は質問を編集しました。私はそれが今より明確であることを願っています。 –

答えて

1

あなたがしたい場合は、各製品の販売数、あなたは、製品を通じてループ、いけませんセールス。

<% Product.includes(:sales).each do |product| %> 
    <%= product.id %> 
    <%= product.sales.count %> 
<% end %> 
+0

私は実際には、 'has_many:sales'という' @ order'で問題を始めます。その注文の売り上げを列挙したいと思います。私は 'Sales。????????????????????????????????を' @ order.sales。??? 'ではなく、ごめんなさい。 –

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 %> 
+0

美しい!ありがとう! –

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 %> 
関連する問題