Oft will man auf seiner Website anzeigen, welche Mitglieder gerade online sind. Courtenay beschreibt einen Lösungsweg in seinem Blog. Hier nochmal etwas aktueller und auf Deutsch.

Umstellen auf Datenbank-Sessions

Falls noch nicht geschehen, muss der SessionStore umgestellt werden, so dass die Sessions in der Datenbank gespeichert werden anstatt im Dateisystem. Zuerst erstellen wir die nötige Session-Tabelle mit:
rake create_sessions_table
Anschließend müssen wir dem ActionController noch mitteilen, dass wir den ActiveRecordStore für unsere Sessions nutzen wollen. Dazu editieren wir config/environment.rb und Ändern oder Ergänzen diese Zeile:
config.action_controller.session_store = :active_record_store

Erstellen des Models

Jetzt brauchen wir noch ein Model, damit wir auch auf die Sessions zugreifen können. Ich habe es der Einfachheit halber Session genannt: script/generate model session
Wir editieren dieses Model anschließend gleich, und tragen die Assoziation zur Benutzer-Tabelle ein: class Session < ActiveRecord::Base
  belongs_to :user
end

Session-Tabelle modifizieren

Die Session-Tabelle benötigt nun noch ein Feld, in dem wir die Id des Benutzers speichern können. Dazu erstellen wir eine Migration: script/generate migration add_user_to_sessions
In diese Migration fügen wir folgendes ein: add_column :sessions, :user_id, :integer

Die UserId setzen

Wenn sich ein Benutzer einloggt, müssen wir seine UserId setzen. Der ActiveRecordStore für Sessions erlaubt einen Zugriff auf die genutzte Tabelle über @session.model: @session.model.user_id = @session[:user_id]

Anzeigen, wer online ist

@users_online = Session.find(:all, :conditions => ['sessions.updated_at > ? AND NOT ISNULL(sessions.user_id)', Time.now - 5.minutes], :include => :user)