2009-02-25 9 views
6

Cela a toujours été un problème pour moi, car les rails n'ont pas de mécanismes de suivi de session comme le font les frameworks java, quelles méthodes utilisez-vous pour suivre qui est actuellement connecté sur votre site? J'utilise une méthode simple en mettant en place le champ last_visited avec l'heure actuelle chaque fois que l'utilisateur clique quelque part sur le site, puis en vérifiant les utilisateurs qui ont mis à jour ce champ dans (disons) les 10 dernières minutes. Quelles autres méthodes y a-t-il à part celle-ci?Comment suivre les utilisateurs en ligne dans Rails?

Répondre

5

Si vous utilisez le active_record_store pour vos sessions, vous pouvez essayer quelque chose comme ceci:

sessions = CGI::Session::ActiveRecordStore::Session.find(:all, :conditions => ["updated_at >= ?", 15.minutes.ago], :order => "created_at ASC") 
sessions.each do |session| 
    if session.data[:user] 
    online_users << User.find(session.data[:user]) 
    end 
end 
+1

Ce qui est bien la solution, mais je suis en utilisant des sessions basées sur les cookies. – Vortex

+0

J'ai certainement trouvé cela utile. Dans les dernières versions de rails 2.x, vous devez utiliser ActiveRecord :: SessionStore :: Session.find – vise

Questions connexes