2009-07-08 63 views
0

長征介紹:我可以創建綁定到會話的數據庫記錄,並在會話被銷燬時被刪除嗎?

通常所必需的所有我的web應用程序的數據都存儲在會話變量。只有當用戶明確表示要保存某些內容時,它纔會存儲到數據庫中。 (如保存評論或從購物車創建訂單)

在我最新的Rails應用程序中,我注意到我真的可以使用許多Rails的ActiveRecord幫助程序,例如find。不幸的是,一些功能如find需要存儲記錄。

我也有臨時ActiveRecords的分層結構,但他們沒有ID,我真的可以使用這些ID來標識控制器操作之間的單個記錄。

短的問題:

我怎麼能寫這些臨時記錄到數據庫中,從而獲得所有的ActiveRecords功能,但要確保這些記錄一旦會話變爲無效清除?

回答

2

YES,使用會話ID作爲A PK和過期日期/時間列並將信息寫入一個或多個表格。如果會話ID很大,請使用身份/自動編號作爲PK,並存儲和索引會話ID,如有必要,請將身份/自動編號用作FK到其他表。

此外,您需要進行一些排序或垃圾收集作業,每x分鐘運行一次,以刪除所有過期日期大於當前日期/時間的所有內容。

+1

不要忘記更新每個頁面加載的過期日期。 – AndyMcKenna 2009-07-08 17:50:19