使用会话数据找出谁在线

时间:2009-05-17 03:32:15

标签: ruby-on-rails session

我希望能够找到谁登录到我的网络应用程序并能够打印出登录用户列表。我还希望能够打印出正在查看应用程序某个部分的人(例如聊天室,因此我可以打印出聊天用户)。

目前,我只是:

session[:role_id] = @role_id

当有人登录该应用时。

2 个答案:

答案 0 :(得分:0)

每次用户向服务器发出请求时,您都可以使用 before_filter 来捕获用户。使用 current_user updated_at 属性(或您执行的任何其他操作调用 logged_in 用户)

使用 before_filter

的简单示例
class RubyDevelopersController < ChatRoomController

 # every time the request hits the server a call is sent to register the user
 before_filter :register_user

 private

 def register_user

    # the current_user's model is updated with the name  
    # of the chatroom he's hidding in.
    # remember that this call also updates updated_at field of the current_user
    current_user.update_attribute( :current_chatroom, 'ruby_developers' )
 end

 def ative_users_in_ruby_developers_chatroom
  # find all users in the current chatroom that has been updated_at in the last 5 minutes.
  Users.find( :all, {
   :conditions => ["current_chatroom = ? and updated_at > ?",'ruby_developers', 5.minutes.ago ],
   :sort => 'updated_at'
  })
 end
end

另见:

http://railsforum.com/viewtopic.php?pid=66001

答案 1 :(得分:0)

如果您将会话数据存储在数据库中,我想您可以创建一个映射到会话表的模型,并在表中查询用户列表。如果所有会话数据都存储在cookie中,那么之前的答案就更加理想了。