2016-04-13 35 views
0

yüzden aşağıdaki tabloyu Sales sahip bir miktar yaparken bir sorguya içinde döngü:Raylar 4 - Gruplama ve polimorfik ilişkiyle,

 
---------------------------------- 
| id | product_id | product_type | 
---------------------------------- 
| 1 |   45 | Rim::Entry | 
---------------------------------- 
| 2 |   45 | Rim::Entry | 
---------------------------------- 
| 3 |   23 | Tyre::Entry | 
---------------------------------- 
| .. |  ... |   ... | 

Ben Satış döngü muktedir istiyorum ve ekran Her bir ürünün kaç tane satıldığını gösterir. Bu benim şimdiki kısmi geçerli:

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

Ve bu diliyorum şeyin bir örnektir çıkış oldu:

Product ID: 45 
Product Name: Rim Model AAA 
Amount sold: 2 

Product ID: 23 
Product Name: TyreZ model XYZ 
Amount sold: 1 

... 
+0

yapmaya çalışıyorsun ne hakkında detaylı bilgi veriniz:

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

+0

Soruyu düzenledim. Umarım şimdi daha açık. –

cevap

1

İsterseniz her bir ürün için satılan numarası ürünlerle döngü, olmamalı satışlar.

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

Aslında sorunumu 'has_many: sales' olan' order' ile başlatıyorum. ve bu sipariş için satışları listelemek istiyorum. Örnekleri "Satış" ile değil, "@ order.sales" ile yapmalıydım. ??? Afedersiniz. –

1

group_by'u kullanabilirsiniz.

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

Güzel! Teşekkürler! –

0

Ben Im değil emin güzel olmasına rağmen bir cevap buldum. Ben cümle anlamıyorum `Ben çevrelerinde döngüler mümkün olabilir bu yüzden bu kısmi kullanabilirsiniz (ya da benzer. Bu değiştirilebilir)`