2009-02-25 15 views
6

Questo è sempre stato un problema per me, dato che le rotaie non hanno meccanismi per il tracciamento delle sessioni come fanno i framework java, quali metodi usi per tenere traccia di chi è attualmente connesso al tuo sito? Io uso un metodo semplice impostando il campo last_visited con l'ora corrente ogni volta che l'utente fa clic da qualche parte sul sito e poi controlla gli utenti che hanno aggiornato quel campo in (diciamo) ultimi 10 minuti. Quali altri metodi ci sono oltre a questo?Come tracciare gli utenti online in Rails?

risposta

5

Se si utilizza il active_record_store per le sessioni, si può provare qualcosa di simile:

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

Che bello soluzione, ma io sto usando le sessioni basate sui cookie. – Vortex

+0

L'ho trovato sicuramente utile. Nelle versioni di rails 2.x più recenti devi utilizzare ActiveRecord :: SessionStore :: Session.find – vise