gpt4 book ai didi

ruby-on-rails - 了解 Rails 中的新 session 何时开始

转载 作者:行者123 更新时间:2023-12-04 06:27:36 25 4
gpt4 key购买 nike

我将从描述一个场景开始,我对其他方法持开放态度,但我想不出任何其他方法。

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

我的计划:

新 session 开始时

  • 如果用户是新用户 - 创建 cookie,登录访问
  • 如果用户返回 - 读取 cookie、增加值、写入 cookie、记录访问

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

    最佳答案

    其实这是个坏主意。 Rails 将 session 存储在数据库或文件系统 (tmp/sessions) 中。如果您想知道用户之前是否在该页面上,您只需不要删除 session (没有 session 过期)。但是随后 session 的数量将增长到无穷大。

    如果用户使用相同的浏览器在同一台机器上返回, session 将仍然存在。在您的应用程序/ session Controller 中,您可以执行以下操作:

    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

    仍然是一个坏主意,因为如果用户在不同的浏览器或计算机上返回,计数器将重新启动。 (更多关于 session : http://ruby.railstutorial.org/chapters/sign-in-sign-out#sec:sessions)

    关于ruby-on-rails - 了解 Rails 中的新 session 何时开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6085607/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com