【问题标题】:Automatically remove a record after a few minutes几分钟后自动删除记录
【发布时间】:2013-04-06 00:00:17
【问题描述】:

我将按照我的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分钟后被删除?

【问题讨论】:

    标签: ruby-on-rails activerecord timeout


    【解决方案1】:

    您可以在查询时只检索最新的读者:

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

    然后你可以有一个后台作业来进行清理。

    【讨论】:

    • 但是如何确定何时应该运行“清理”作业以消除 readers
    • 该作业将定期运行(例如每 24 小时一次),并将删除 readers 表中 5 分钟前创建的所有记录。
    • 谢谢。我认为这是处理这个问题的最简单的方法。但我仍然有点不确定如何在我的应用程序中定期运行某个作业,而无需任何人调用该操作。
    • @MaximusS 有几个工具可以做到这一点。查看this RailsCast to find out about Cron。还有更高级的解决方案,如ResqueSidekiq
    • 非常感谢。有时间可以看看stackoverflow.com/questions/15846517/…吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 2019-12-07
    • 2018-04-15
    • 2012-07-08
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多