我可以创建与会话关联的数据库记录,并在会话销毁时删除吗?

时间:2009-07-08 17:41:47

标签: ruby-on-rails session

长篇介绍:

通常,我的Web应用程序所需的所有数据都存储在会话变量中。只有当用户明确说明要保存某些内容时,才会将其存储到数据库中。 (比如保存评论或从购物车创建订单)

在我最新的Rails应用程序中,我注意到我真的可以使用许多Rails的ActiveRecord帮助程序,例如find。不幸的是,像find这样的函数需要存储记录。

我还有一个临时ActiveRecords的层次结构,但它们没有ID,我真的可以使用这些ID来识别控制器操作之间的各个记录。

简短问题:

如何将这些临时记录写入数据库,从而获得所有ActiveRecords功能,但确保在会话失效后立即清除这些记录?

1 个答案:

答案 0 :(得分:2)

,将会话ID用作A PK,并使用过期日期/时间列,并将信息写入一个或多个表。如果会话ID很大,请使用身份/自动号码作为PK并只存储和索引会话ID,如有必要,请使用身份/自动号码作为其他表格的FK。

此外,您需要一些排序或垃圾回收作业,每隔x分钟运行一次,以删除过期日期大于当前日期/时间的所有内容。