2013-04-06 88 views
0

我將按照我的first question中的建議使用timeout。因此,如果某人查看帖子,他將被記錄到正在查看同一帖子的人員列表中,並且該記錄將在一段時間(例如5分鐘)後過期。幾分鐘後自動刪除記錄

有人建議我使用cache來實現這一點,但我想我會嘗試像下面這樣使用Rails關聯。

post has_many readers

而在PostsController#Show

@post.readers.create(user: current_user),我需要讓這個記錄5分鐘後過期,因此CURRENT_USER將從post.readers系統自動剔除。

這是正確的做法嗎?另外,如何設置Reader型號,以便在創建5分鐘後刪除任何記錄?

回答

1

你可以只檢索最新的讀者,當你做查詢:

post.readers.where('created_at >= ?', 5.minutes.ago) 

然後你就可以有一個後臺作業做清理工作。

+0

但是,如何確定何時應該執行「清理」工作以消除「讀者」? – 2013-04-06 00:26:25

+0

該作業將定期運行(例如每24小時)並刪除5分鐘前創建的'readers'表中的所有記錄。 – alf 2013-04-06 00:28:51

+0

謝謝。我認爲這是處理這個問題最簡單的方法。但是我仍然有點不確定我如何定期在應用程序中運行某個工作,而無需任何人調用該操作。 – 2013-04-06 00:50:12