2013-04-06 96 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