2011-11-08 23 views
11

Tablolarımdaki stoklarım, sütun olarak product_id, color_id, storage_id and in_stock içerir. Ben depolama göre gruplandırmak tüm stokları istiyorum Belirli bir ürün içinKoleksiyon raylarla sütunlara göre gruplandırma

, o zaman ürün (renk) göstermek istediğiniz her depolama için: in_stock

nasıl bir yöntem yazmalıyım ve nasıl işlemek için?

cevap

20
<% Stock.all.group_by(&:storage).each do |storage, products| %> 
    Storage: <%= storage %> 
    <% products.each do |product| %> 
    (<%= product.color_id %>): <%= product.in_stock %> 
    <% end %> 
<% end %> 

Düzenleme: bir sayı olarak ERB ve IN_STOCK kullanmak için güncellendi ve bir boolean evet/hayır sütun ve bu bir renge bir ilişki var varsayar çünkü color.name yerine color_id kullanmak .

+0

Merhaba, cevabınız için teşekkürler. Konsol aracılığıyla, ancak UI aracılığıyla beklendiği gibi çalışır. # {# => [# , # , # ] ... 'İlişkiden şikayetçi gibi görünüyor ama hangisi olduğundan emin değil. Herhangi bir fikir? – Gaelle

+0

@Gaelle Cevabımı ERB'yi ve bu yorumdan birkaç ipucu kullanmak için güncelledim. Daha fazla sorununuz varsa, lütfen daha açıklayıcı olun. Bir hata mesajınız varsa, lütfen gönderin. – Unixmonkey

1

Tam olarak ihtiyacınız olan şekilde yapılandırılmamış (gönderilerinizden yeterli bilgi yok), ancak bunun gibi bir şey olabilir mi?

items = Stock.select('color_id, in_stock').group('stocks.storage_id').where(:product_id => foo) 

items.each {|item| puts "(#{lookup_color(item.color_id)}): #{in_stock}" 
İlgili konular