Rails如何知道何时从`sessions`表中删除记录?

时间:2011-03-31 18:28:11

标签: ruby-on-rails-3 session

Rails如何知道何时从会话表中删除记录?

例如,如果用户访问网站,则会创建会话记录,但是当用户关闭浏览器窗口时,服务器不会收到任何通知,那么Rails如何从会话表中删除记录?

2 个答案:

答案 0 :(得分:7)

有简单的方法:

ActiveRecord::SessionStore::Session.delete_all(["updated_at < ?", 12.hours.ago])

你可以在控制器中的一些Action之后调用它,这段代码会杀死所有死会话。

当然它是有争议的技术,但最简单。

Full story

答案 1 :(得分:3)

根据我的理解,您必须提供自己的会话到期实现。

This API page为您提供了相当不错的答案。您可以使用额外的属性created_on和updated_at创建数据库表(并且您可以免费获得时间戳),然后您只需创建一个作业,通过查看up​​dated_at属性,随时将它们过期。

This post详细介绍了如何开展工作。