2010-11-13 11 views
6

सोशल नेटवर्क साइट के लिए, मेरे पास आपके द्वारा अनुसरण किए जाने वाले लोगों की घटनाओं की एक गतिविधि है, और मैं एक साथ थोड़े समय के भीतर किए गए समान प्रकार की घटनाओं को समूहबद्ध करना चाहता हूं, और अधिक के लिए कॉम्पैक्ट गतिविधि फ़ीड। कल्पना करें कि जब फेसबुक तेजी से उत्तराधिकार में कई चीजें पसंद करता है तो फेसबुक कैसे अल्पविराम से अलग सूची प्रदर्शित करता है: 'जो बीयर, फुटबॉल और चिप्स पसंद करता है।'एक गतिविधि फ़ीड में समान आइटम कैसे समूहित करें

मैं ActiveRecord संख्यात्मक परिणामों पर group_by विधि का उपयोग करके समझता हूं, लेकिन कुछ प्रारंभिक कार्य होने की आवश्यकता है जो एक संपत्ति को पॉप्युलेट कर रहा है जिसे मैं बाद में समूह कर सकता हूं। मेरे प्रश्न गतिविधि डेटा को संग्रहीत करने के साथ सौदा करते हैं कि इन समूहों को चिह्नित किया जा सकता है, और फिर बाद में उन्हें पुनः प्राप्त किया जा सकता है।

अभी मेरे पास एक गतिविधि मॉडल है, जो उस गतिविधि और उस वस्तु के बीच एक सहयोगी सहयोग है जिसने इसे जोड़ा है (ऊपर दिए गए मेरे उदाहरण में, 'बीयर', 'फुटबॉल' और 'चिप्स' एक लाइक मॉडल के रिकॉर्ड हैं)। 'पसंद' से अलग अन्य गतिविधि प्रकार भी हैं (घटनाएं, पसंदीदा सहेजना आदि)। मैं जो विचार कर रहा हूं वह है, क्योंकि यह एसोसिएशन बनाया गया है, उस चेक का अंतिम सहयोग होने पर एक चेक किया जाता है, और यदि इसे एक निश्चित समय अवधि से अधिक बनाया गया था, तो एक 'गतिविधि ब्लॉक' काउंटर बढ़ाना जो भाग है गतिविधि मॉडल का। बाद में, जब इस गतिविधि फ़ीड को प्रस्तुत करते हैं, तो मैं उपयोगकर्ता द्वारा समूह कर सकता हूं, फिर टाइप करें, फिर यह गतिविधि ब्लॉक काउंटर।

उदाहरण: मान लें कि अपडेट के 2 ब्लॉक उसी दिन के भीतर किए जाते हैं। उपयोगकर्ता को 2:05 पर 2 चीजें पसंद होती हैं और बाद में 3 और चीजें 5:45 पर पसंद करती हैं। तीसरे अपडेट (दूसरे ब्लॉक की शुरुआत) के बाद 5:45 पर होता है, मॉडल का पता चलता है कि बहुत अधिक समय बीत चुका है और इसकी गतिविधि ब्लॉक काउंटर 1 से बढ़ता है, इस प्रकार किसी नए ब्लॉक में किसी भी निम्न अपडेट को मजबूर कर देता है जब उन्हें एक के माध्यम से प्रस्तुत किया जाता है group_by कॉल:

2:05 Joe likes beer nuts and Hooters. 

5:45 Joe likes couches, chips and salsa. 

7:00 Joe is attending the Football Viewing Party At Joe's 

मेरा पहला प्रश्न: इस तरह के काउंटर को बढ़ाने का एक प्रभावी तरीका क्या है? यह अब auto_increment नहीं है, इसलिए सबसे आसान बात यह है कि मैं संदर्भ बिंदु के रूप में अंतिम रिकॉर्ड के लिए काउंटर को देख रहा हूं। हालांकि, यह वही क्वेरी से नहीं हो सकता है जिसने उस प्रकार के अंतिम अद्यतन के लिए जांच की थी, क्योंकि बाद के दूसरे अपडेट के बाद के अपडेट को पहले काउंटर वैल्यू पहले से ही प्राप्त हो सकता था। उन्हें विश्व स्तर पर अद्वितीय होना जरूरी नहीं है, लेकिन यह अच्छा होगा।

अन्य समग्र रणनीति जो मैंने सोचा था, एक और मॉडल कॉल एक्टिविटीब्लॉक था, जो समान गतिविधियों के समूहों को एक साथ जोड़ता है। कई मामलों में, अपडेट स्वयं को अलग कर दिए जाएंगे, इसलिए यह प्रत्येक व्यक्तिगत गतिविधि के लिए एक रिकॉर्ड होने के लिए थोड़ा अक्षम लगता है।

इनमें से कोई भी ठोस रणनीति की तरह दिखता है?

मेरा अंतिम प्रश्न पेजिनेशन के चारों ओर घूमता है। अब जब हम ब्लॉक से निपट रहे हैं, तो अंकन से पहले, निश्चित रूप से एक निश्चित मात्रा में प्रविष्टियों को प्रदर्शित करना कठिन होता है। या तो एक व्यक्ति (पृथक) गतिविधि अद्यतन, या उसके बाद का ब्लॉक केवल 1 के रूप में गिना जाना चाहिए, इसलिए निम्नतम पर मेरे group_by की परत, मैं ट्रैक करने के लिए काउंटर को शामिल कर सकता हूं कि मैंने कितनी पंक्तियां प्रदर्शित की हैं, लेकिन इसका मतलब है कि मैं सिर्फ एक डीबी क्वेरी नहीं बना सकता और बस एक सीमा कथन निर्दिष्ट कर सकता हूं। क्या कोई तरीका है कि मैं बार-बार अतिरिक्त SQL प्रश्नों को निष्पादित किए बिना ऐसा कर सकता हूं जब तक कि मैं अपनी पृष्ठ सीमा तक नहीं पहुंच जाता?

यह गतिविधिब्लॉक मॉडल दृष्टिकोण का एक फायदा होगा, क्योंकि मैं आसानी से उस सीमा कॉल को लागू कर सकता हूं, और ब्लॉक में ऑटो वृद्धि काउंटर भी हो सकता है।

+0

हाय जूस्ट, आप डेटा मॉडल जो कुछ के लिए क्या किया है का हिस्सा सकते हैं? मेरा मतलब है कि आप प्रत्येक उपयोगकर्ताओं के लिए गतिविधियों को कैसे संग्रहीत कर रहे हैं? धन्यवाद – Imran

+0

जाना सबसे अच्छा तरीका क्या था पर कोई भी निर्णय? – MonkeyBonkey

+0

मैंने इस परियोजना को अभी पकड़ लिया है, और इस विशेष पहलू के साथ आगे प्रयोग नहीं किया है। –

उत्तर

0

आप इस्तेमाल कर सकते हैं युग के समय, या के बाद से thats अर्द्ध अद्वितीय और नियतात्मक

1

चेक बाहर http://railscasts.com/episodes/406-public-activity उन्होंने यह भी कैसे प्रकरण 407 में शून्य से यह करने के लिए पर एक पोस्ट काउंटर के रूप में उसकी किसी विविधता (यह हालांकि एक प्रो एपिसोड)।

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