2012-05-24 17 views
6

मैं हर दिन बनाए गए आइटमों की संख्या का एक सरणी बनाना चाहता हूं।रेल - दिन के साथ-साथ घंटे

मैं देख रहा हूं कि लोग कैसा महसूस कर रहे हैं, इसलिए मेरे मॉडल को TrackMood कहा जाता है। इसमें केवल mood और टाइमस्टैम्प नामक कॉलम है।

अगर मैं

TrackMood.where(mood: "good").group("hour(created_at)").count 

मैं {11 => 4, 12 => 2, 13 => 2, 15 => 1}

मुझे मिल गया है 2 मुद्दों की तरह कुछ मिलता है यहां

1 मैं इसमें दिन कैसे जोड़ूं ताकि यह कल 11 बजे जोड़े गए आइटमों पर 11 बजे कल बनाई गई वस्तुओं को न जोड़ सके?

2 मैं यह सुनिश्चित कैसे कर सकता हूं कि 0 घंटों के लिए कुछ भी नहीं बनाया गया है?

उत्तर

9

1) तारीख के केवल घंटों के हिस्से को समूहित करने के बजाय आपको प्रासंगिक तिथि का हिस्सा समूहित करने की आवश्यकता होगी यानी घंटे की तारीख और उससे अधिक विशिष्ट कुछ भी शामिल नहीं है। जैसे

TrackMood.where(mood: "good").group("date_format(created_at, '%Y%m%d %H')").count 

2) आप हमेशा इस कॉल से हैश प्राप्त करने जा रहे हैं, भले ही उसे कोई समूह न मिले। यदि आप यह देखना चाहते हैं कि आप कितने समूह हैं तो आप .size या .count पर कॉल कर सकते हैं।

+0

क्ष 1. के लिए शानदार दूसरे भाग के लिए, मैं अपने आप को स्पष्ट कर दी है नहीं कर सकते। यदि उस समय कोई आइटम नहीं बनाया गया है तो मैं हैश में 14 => 0 होना चाहता हूं। – Edward

+0

आह क्षमा करें, ठीक है, अब मैं समझता हूं। ईमानदार होने के लिए आप दृढ़ता से परत प्रदान करने के बजाय दृढ़ता से परतों को जोड़ने के बजाय खाली समूहों में जोड़ना बंद कर सकते हैं। – Shadwell

संबंधित मुद्दे