ruby-on-rails – 知道Rails中新会话何时开始
我将首先描述一个场景,我对其他方式持开放态度,但我想不出任何其他方式.
我在Rails 2应用程序上有匿名用户.当一个新用户访问该网站时,我想放置一个cookie,说“我已经访问过该网站一次”并将其记录在我们的系统中.用户离开并在一个月后回来我读了这个cookie,增加了访问次数(“我来过这里2次”)并将其记录在我们的系统中. 我的计划: 新会话开始时 >如果用户是新用户 – 创建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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |