加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 知道Rails中新会话何时开始

发布时间:2020-12-17 01:59:19 所属栏目:百科 来源:网络整理
导读:我将首先描述一个场景,我对其他方式持开放态度,但我想不出任何其他方式. 我在Rails 2应用程序上有匿名用户.当一个新用户访问该网站时,我想放置一个cookie,说“我已经访问过该网站一次”并将其记录在我们的系统中.用户离开并在一个月后回来我读了这个cookie,
我将首先描述一个场景,我对其他方式持开放态度,但我想不出任何其他方式.

我在Rails 2应用程序上有匿名用户.当一个新用户访问该网站时,我想放置一个cookie,说“我已经访问过该网站一次”并将其记录在我们的系统中.用户离开并在一个月后回来我读了这个cookie,增加了访问次数(“我来过这里2次”)并将其记录在我们的系统中.

我的计划:

新会话开始时

>如果用户是新用户 – 创建cookie,登录访问
>如果用户正在返回 – 读取cookie,增加值,写入cookie,记录访问

我现在被困住的地方是“当一个新的会话开始时”步骤.如果您有.net背景,我正在寻找的是ASP.NET中的Session_Start.我可以在每个请求上查询数据库,并检查是否已经记录了特定的会话ID,但这似乎效率低下.

解决方法

实际上这是一个坏主意. Rails将会话存储在db或文件系统(tmp / sessions)中.如果您想知道,如果用户之前在页面上,您只是不删除会话(没有会话到期).但随后会话数量将增长到无限.

如果用户使用相同的浏览器返回同一台计算机,则会话仍将存在.在您的应用程序/会话控制器中,您可以:

session[:visits] ||= 0
session[:visits] += 1

但随后每次点击都会增加.因此,如果您只想计算您需要存储最后点击时间的访问次数,只需增加,如果用户离开的时间超过半小时左右.

session[:visits] ||= 0
now = DateTime.now.to_i
session[:visits] += 1 if session[:last_click] && session[:last_click] < (now - 60*30)
session[:last_click] = DateTime.now.to_i

还是个坏主意,因为如果用户在不同的浏览器或计算机上返回,计数器将再次启动. (有关会话的更多信息:http://ruby.railstutorial.org/chapters/sign-in-sign-out#sec:sessions)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读