2013-01-02 7 views
5

Supponiamo che gli utenti trascorrano molto tempo nel sito web.
Come posso ottenere l'ultimo orario attivo dell'utente. L'ultimo orario attivo indica l'ultimo timestamp dell'utente che ha richiesto (accesso alla pagina. L'utente non ha nemmeno bisogno di aggiornare o creare un nuovo record) nell'app.Come posso ottenere l'ultimo orario attivo dell'utente quando uso Devise?

Un utente potrebbe aver effettuato l'accesso circa un'ora fa. Poi naviga ancora sul mio sito web. Desidero il tempo dell'ultima richiesta inviata dall'utente.

È possibile?

Devise ha current_sign_in_at ma non l'ultima volta attiva.

risposta

18

Il modo in cui vorrei implementare questa è quello di aggiungere una colonna datetime last_active_at al modello d'uso, poi mettere qualcosa nel mio controller:

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

E 'perfettamente funzionante !! Grazie!! – cat

+0

Sto usando il setInterval di ajax, quindi ogni volta che si ricarica automaticamente, aggiorna questo ** last_active_at ** come posso impostare l'eccezione? l'azione è 'community # refresh' – cat

+1

Se stai usando setInterval per inviare periodicamente una chiamata AJAX al server e recuperare nuovi dati, non devi fare nulla. Il filtro verrà comunque eseguito prima dell'azione di aggiornamento della community, anche se sta arrivando tramite AJAX, a condizione che l'utente disponga dei cookie e che non ci sia qualcos'altro che potrebbe interrompere la sessione dell'utente. –

Problemi correlati