2009-02-25 16 views
6

Điều này luôn luôn là một vấn đề đối với tôi, vì đường ray không có một số cơ chế để theo dõi phiên như khuôn khổ java, phương pháp nào bạn sử dụng để theo dõi ai hiện đang đăng nhập vào trang web của bạn? Tôi sử dụng một phương pháp đơn giản bằng cách thiết lập trường last_visited với thời gian hiện tại mỗi khi người dùng nhấp vào một nơi nào đó trên trang web và sau đó kiểm tra người dùng đã cập nhật trường đó trong (cho phép nói) 10 phút trước. Những gì phương pháp khác là có bên cạnh này?Cách theo dõi người dùng trực tuyến trong Rails?

Trả lời

5

Nếu bạn đang sử dụng cho các phiên active_record_store của bạn, bạn có thể thử một cái gì đó như thế này:

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

Đó là giải pháp tốt đẹp nhưng tôi đang sử dụng phiên Cookie dựa. – Vortex

+0

Tôi chắc chắn thấy điều này hữu ích. Trong các phiên bản 2.x mới nhất của đường ray bạn phải sử dụng ActiveRecord :: SessionStore :: Session.find – vise