如何查找同一页面上的用户

时间:2015-05-06 13:49:22

标签: ruby-on-rails devise

我是rails的新手,我有一个名为" Topic"的模型,我希望得到那些正在查看主题索引页面的用户。

如何获得这些用户,有人可以帮助我吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

Here是描述如何跟踪活跃/在线用户使用Redis的文章。您可以使用此方法跟踪当前正在查看您网页的用户。

答案 1 :(得分:1)

我会这样做:

与Jack Hardcastle的建议类似,您可以在数据库的users表中创建一个列,用于存储用户网址的路径部分,另一列名为" last_seen_at&#34 ;

:string last_viewed_page
:datetime last_seen_at

然后,在你的ApplicationController中你可以有一个像这样的before_filter:

#in ApplicationController
before_action :set_last_seen_at_and_last_viewed_page

def set_last_seen_at_and_last_viewed_page
  if current_user && request.method == :get 
    current_user.update_attributes(:last_seen_at => Time.now, :last_viewed_page => request.path)
  end
end

我测试request.method == :get的原因是它只包含他们实际在浏览器中加载的页面,并在地址栏中查看地址,而不是通常对用户隐藏的表单提交URL。

所以,现在你有了数据,它很容易查询。在这个确切的时刻,我们永远无法知道谁在页面上,因为我们不知道他们实际在做什么 - 他们可能已经上厕所或关闭了电脑。我们只能说"这个页面是这些人看到的最后一页,他们在最后15分钟内这样做了#34;或者其他什么。

所以,如果我们想要使用过去15分钟的标准,我们可以说

@current_path = request.path
@users_on_current_path = User.where(["last_seen_at > ? and last_viewed_page = ?", 15.minutes.ago, @current_path])