【发布时间】:2011-07-27 03:31:36
【问题描述】:
Rails 如何知道何时从会话表中删除记录?
例如,如果用户访问网站,创建了一个会话记录,但是当用户关闭浏览器窗口时,服务器没有收到任何通知,那么 Rails 是如何从会话表中删除记录的呢?
【问题讨论】:
Rails 如何知道何时从会话表中删除记录?
例如,如果用户访问网站,创建了一个会话记录,但是当用户关闭浏览器窗口时,服务器没有收到任何通知,那么 Rails 是如何从会话表中删除记录的呢?
【问题讨论】:
有更简单的方法:
ActiveRecord::SessionStore::Session.delete_all(["updated_at < ?", 12.hours.ago])
您可以在 Controller 中的一些操作之后调用它,这段代码会杀死所有死会话。
当然这是有争议的技术,但最简单。
【讨论】:
据我了解,您必须提供自己的会话到期实现。
This API page 给你一个相当不错的答案来了解它是如何工作的。您创建具有额外属性 created_on 和 updated_at 的数据库表(并且您可以免费获得时间戳),然后您只需通过查看 updated_at 属性创建一个作业以使它们随时到期。
This post 有如何运行作业的详细信息。
【讨论】: