2011-11-08 19 views
11

मेरी तालिका में स्टॉक नाम product_id, color_id, storage_id and in_stock कॉलम के रूप में हैं।रेल के साथ कॉलम द्वारा संग्रह समूह कैसे करें

किसी दिए गए उत्पाद मैं भंडारण द्वारा सभी स्टॉक समूह के लिए, तो प्रत्येक भंडारण मैं उत्पाद (रंग) से दिखाना चाहते हैं: in_stock

कैसे मैं एक विधि लिखना चाहिए और कैसे प्रस्तुत करने के लिए?

उत्तर

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

संपादित करें: एक संख्या के रूप ERB, और in_stock उपयोग करने के लिए अद्यतन और कोई बूलियन नहीं हां/नहीं स्तंभ, और color.name के स्थान पर color_id उपयोग करें, क्योंकि यह है कि मान लिया गया है यदि आपके पास रंगीन करने के लिए एक रिश्ता है ।

+0

हाय, आपके उत्तर के लिए धन्यवाद। कंसोल के माध्यम से यह उम्मीद के अनुसार काम करता है हालांकि यूआई के माध्यम से यह '# {# <संग्रहण आईडी: 1, नाम:" वेयरहाउस ", अपडेट किया गया:" 2011-11-08 21:18:07 "> => [# <स्टॉक आईडी: 1, product_id: 1, color_id: 10, storage_id: 1, in_stock: 5.0>, # <स्टॉक आईडी: 586, product_id: 1, color_id: 1, storage_id: 1, in_stock: 0.0>, # <स्टॉक आईडी: 5 9 1, product_id: 1, color_id: 2, storage_id: 1, in_stock: 0.0>] ... 'ऐसा लगता है कि यह रिश्ते के बारे में शिकायत करता है लेकिन यह सुनिश्चित नहीं करता कि कौन सा है। कोई उपाय? – Gaelle

+0

@ गैलेले मैंने इस टिप्पणी से ईआरबी और कुछ सुरागों का उपयोग करने के लिए अपना जवाब अपडेट कर दिया है। यदि आपको और समस्याएं हैं, तो कृपया अधिक वर्णनात्मक बनें। अगर आपके पास कोई त्रुटि संदेश है, तो कृपया इसे पोस्ट करें। – Unixmonkey

1

बिल्कुल संरचित नहीं है कि आपको इसकी आवश्यकता क्यों है (आपकी पोस्ट से पर्याप्त जानकारी नहीं है), लेकिन शायद ऐसा कुछ?

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}" 
संबंधित मुद्दे