我是rails的新手,我有一个名为" Topic"的模型,我希望得到那些正在查看主题索引页面的用户。
如何获得这些用户,有人可以帮助我吗?
提前致谢
答案 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])