2010-02-28 6 views
2

J'utilise la session ruby ​​on rails pour stocker un cookie utilisateur afin de le garder connecté. Je ne peux donc pas mettre à jour une colonne last_seen après sa connexion. J'essaie de trouver le meilleur moyen de savoir si un utilisateur a été actif le dernier jour. Voilà ce que j'ai à ce jour, mais je me demande s'il y a une meilleure façon:Recherche de la dernière heure active pour l'utilisateur connecté

class ApplicationController 
    before_filter :update_last_seen 

private 
    def update_last_seen 
    if (DateTime.now - 1.day) < current_user.last_seen 
     current_user.last_seen = DateTime.now 
     current_user.save 
    end 
    end 
end 

Le problème est qu'il va être appelée avec chaque demande. y-a-t-il un moyen d'éviter ça? Le cookie de session est-il mis à jour d'une manière ou d'une autre lorsqu'un utilisateur est actif?

Répondre

3

Non, c'est exactement ce que vous devriez faire. before_filter s sont un excellent moyen de garder une trace de choses comme ça, et comment authlogic implémente aussi son système d'authentification. Il n'y a aucun moyen de traiter une demande "par jour". Si vous utilisez Authlogic comme méthode d'authentification, l'heure de dernière connexion est intégrée. Vous pouvez en voir un exemple here.

+0

Ok merci, ça ressemble à update_last_request_at! pourrait être la méthode utilisée par Authlogic: http://github.com/qoobaa/sms/blob/41e2ee0ea1425b44db29150a940f153aaaac50d7/vendor/gems/authlogic-1.4.1/lib/authlogic/session/timeout.rb. – TenJack

Questions connexes