在Ruby on rails应用程序中在线查看所有用户

时间:2011-03-12 13:09:08

标签: ruby-on-rails

有谁知道如何在Rails应用程序中在线显示所有用户? 我有一个用户模型,我想查看目前在线的所有用户。 例如,在我的用户控制器中,我有:

@users = User.all(:collection => "status => 'online'", :locals => {:users => @users}) 

在我的观点中index.html.erb

<%= div_for user do %> 
<h1>Online Users</h1>
<%= link_to image_tag(user.avatar.url(:thumb).to_s)%>
<%= user.username %>
<% end %>

问题是:我可以用什么方法来显示登录用户?

3 个答案:

答案 0 :(得分:2)

您可以在application_controller上设置before_filter,以设置'online_at'属性。然后,您可以显示最近5分钟内在线的所有用户。

答案 1 :(得分:1)

据我所知,您的用户模型有一个状态属性,表示用户是否在线。

根据您指定的内容,我无法确定您的控制器是否正确地拉回用户;但是,你可以试试这样的......

在您的控制器中:

@users = Users.find(:all, :conditions => ["status = ?", "online"])

然后在你的相关视图中:

<ul>
<% @users.each do |user| %>
  <li>
    <%= link_to image_tag(user.avatar.url(:thumb).to_s) %>
    <%= user.username %>
  </li>
<% end %>
</ul>

最后,您可能希望将上述代码移动到局部,然后设置一个Ajax轮询机制,该机制将以特定间隔检查服务器,以确保您的列表是最新的。

答案 2 :(得分:0)

我们可以列出在线用户(当前已登录的用户),请参阅此github应用https://github.com/mohanraj-ramanujam/online-users

但您需要确保用户当前使用设计last_sign_in_at来查看该页面。

由于