Rails如何知道何时从会话表中删除记录?
例如,如果用户访问网站,则会创建会话记录,但是当用户关闭浏览器窗口时,服务器不会收到任何通知,那么Rails如何从会话表中删除记录?
答案 0 :(得分:7)
有简单的方法:
ActiveRecord::SessionStore::Session.delete_all(["updated_at < ?", 12.hours.ago])
你可以在控制器中的一些Action之后调用它,这段代码会杀死所有死会话。
当然它是有争议的技术,但最简单。
答案 1 :(得分:3)
根据我的理解,您必须提供自己的会话到期实现。
This API page为您提供了相当不错的答案。您可以使用额外的属性created_on和updated_at创建数据库表(并且您可以免费获得时间戳),然后您只需创建一个作业,通过查看updated_at属性,随时将它们过期。
This post详细介绍了如何开展工作。