2009-02-25 14 views
6

Das war immer ein Problem für mich, da Rails keine Mechanismen für Session-Tracking wie Java-Frameworks haben, welche Methoden verwenden Sie, um zu verfolgen, wer derzeit auf Ihrer Website angemeldet ist? Ich benutze eine einfache Methode, indem ich das last_visited-Feld mit der aktuellen Zeit jedes Mal neu einrichte, wenn der Benutzer irgendwo auf der Site klickt und dann nach Benutzern sucht, die dieses Feld in (sagen wir mal) die letzten 10 Minuten aktualisiert haben. Welche anderen Methoden gibt es neben dieser?Wie verfolgen Sie Online-Benutzer in Rails?

Antwort

5

Wenn Sie die active_record_store für Ihre Sitzungen verwenden, können Sie so etwas wie dies versuchen:

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

Das schöne Lösung, aber ich bin Cookies in Ihrem Browser-Sitzungen verwendet wird. – Vortex

+0

Ich fand das sicherlich nützlich. In den neuesten Versionen von Rails 2.x müssen Sie ActiveRecord :: SessionStore :: Session.find verwenden – vise