2013-01-02 16 views
5

मान लीजिए उपयोगकर्ता वेब साइट पर लंबे समय तक व्यतीत कर रहे हैं।
मैं उपयोगकर्ता के अंतिम सक्रिय समय को कैसे प्राप्त कर सकता हूं। अंतिम सक्रिय समय का मतलब है कि उपयोगकर्ता के अंतिम टाइमस्टैम्प ने अनुरोध किया है (पृष्ठ तक पहुंचा है। उपयोगकर्ता को ऐप में अपडेट करने या नए रिकॉर्ड बनाने की भी आवश्यकता नहीं है)।डेविस का उपयोग करते समय मैं उपयोगकर्ता के अंतिम सक्रिय समय को कैसे प्राप्त कर सकता हूं?

एक उपयोगकर्ता ने लगभग एक घंटे पहले साइन इन किया होगा। फिर भी वह मेरी वेबसाइट पर वेब सर्फिंग कर रहा है। मुझे उपयोगकर्ता द्वारा भेजा गया अंतिम अनुरोध का समय चाहिए।

क्या यह संभव है?

डेविस current_sign_in_at लेकिन सक्रिय समय नहीं है।

उत्तर

18

तरह से मैं यह लागू होगा उपयोगकर्ता मॉडल के लिए एक last_active_at datetime स्तंभ जोड़ने के लिए है, तो मेरी नियंत्रक में कुछ डाल है:

class ApplicationController 
    before_filter :record_user_activity 

    private 

    def record_user_activity 
    if current_user 
     current_user.touch :last_active_at 
    end 
    end 
end 
+0

यह पूरी तरह से काम कर रहा है !! धन्यवाद!! – cat

+0

मैं AJAX के सेट इंटरवल का उपयोग कर रहा हूं, इसलिए हर बार जब यह स्वचालित रूप से पुनः लोड हो जाता है, तो यह ** last_active_at ** अपडेट करता है ** मैं इसे अपवाद कैसे सेट कर सकता हूं? कार्रवाई 'समुदाय # रीफ्रेश' – cat

+1

है यदि आप समय-समय पर एक इंजेक्स कॉल सर्वर पर वापस भेजने और नए डेटा लाने के लिए सेटइंटरवाल का उपयोग कर रहे हैं, तो आपको कुछ भी करने की आवश्यकता नहीं है। फिल्टर अभी भी समुदाय से पहले चलाएगा # कार्रवाई को रीफ्रेश करें, भले ही यह AJAX के माध्यम से आ रहा हो, तब तक जब तक उपयोगकर्ता के पास कुकीज़ हो और वहां कुछ और नहीं है जो उपयोगकर्ता के सत्र को बाधित कर सकता है। –

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

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