यह देखते हुए कि मुझे उपयोगकर्ता गठबंधन और अटैचमेंट मिला। संख्या संख्या के साथ एक पूर्णांक के रूप में विज़िट करता है।नेस्टेड संग्रह के सभी गुणों को कैसे समेटें?
मैं उस उपयोगकर्ता की सभी छवियों की सभी यात्राओं को आसानी से कैसे गिन सकता हूं?
यह देखते हुए कि मुझे उपयोगकर्ता गठबंधन और अटैचमेंट मिला। संख्या संख्या के साथ एक पूर्णांक के रूप में विज़िट करता है।नेस्टेड संग्रह के सभी गुणों को कैसे समेटें?
मैं उस उपयोगकर्ता की सभी छवियों की सभी यात्राओं को आसानी से कैसे गिन सकता हूं?
उपयोग ActiveRecord::Base#sum:
user.attachments.sum(:visits)
यह इस तरह एक कुशल SQL क्वेरी उत्पन्न करनी चाहिए:
SELECT SUM(attachments.visits) FROM attachments WHERE attachments.user_id = ID
user.attachments.map{|a| a.visits}.sum
या 'user.att achments.map (&: विज़िट) .sum' – rubyprince
या 'user.attachments.sum (&: विज़िट)' – Jordan
वास्तव में, @ Jordon का समाधान सबसे अच्छा है। – Calin
वहाँ भी inject
है:
user.attachments.inject(0) { |sum, a| sum + a.visits }
लोग आम तौर पर (और काफी ठीक ही) inject
नफरत है, लेकिन जब से दो इस को प्राप्त करने के अन्य तरीके हैं जिनसे उल्लेख किया गया है, मैंने सोचा कि मैं के रूप में अच्छी तरह से फेंक सकता है वहाँ से बाहर। :)
सादा पुराना रूबी वस्तुओं के साथ निम्न काम करता है, और मुझे लगता है निम्नलिखित मामूली तेजी से होता है count += a.visits
का उपयोग करने के अलावा, इसके अलावा इसमें एक इमोटिकॉन है:
user.attachments.map(&:visits).inject(:+)
हाहाहाह अब तक, सबसे अच्छा जवाब हाहाहा – facundofarias
यदि आप विज़िट का दायरा जोड़ना चाहते हैं तो क्या होगा। उदाहरण के लिए, विज़िट का दायरा होता है: सक्रिय, -> {जहां ('विशेषता पूर्ण नहीं है')}। कुछ "user.attachments.sum (visit.active) की तरह कुछ? – doug