【问题标题】:rails-how to update attributes based on time/dayrails-如何根据时间/日期更新属性
【发布时间】:2011-08-15 15:09:25
【问题描述】:

您将如何根据一天中的时间或当天的时间来更新数据库中的属性。我有能量、饥饿和快乐三个属性,我想每小时减少十个,但我不知道该怎么做。我知道数据库中有时间戳,但我真的不知道如何使用它们。我也想每天根据他们的工作改变球员的技能。所以如果你有这份工作,每天智力加2。但我不知道如何每天添加 2。如果有人能帮我解决这个问题,我会很高兴的。我将不胜感激。

【问题讨论】:

    标签: ruby-on-rails ruby time update-attributes


    【解决方案1】:

    有两种常见但根本不同的方式来实现这一点:

    • 在每个请求期间,模拟自上次请求以来经过的时间量。如果用户在三个小时内发出两个请求,则通过一次减去 30 个幸福(10/小时乘以 3 小时)来模拟三个小时的时间流逝。这占用的资源较少,但需要您多花点心思。像“每小时降低 10 个值”这样简单的事情并不难,但更复杂的交互更难建模。

    • 运行一个 cron 作业,每小时在您的程序中调用一个动作,每小时从每个帐户中扣除 10 个快乐值。从概念上讲,这更容易,但如果您有很多用户,尤其是当其中一些用户长时间闲置时,则会产生大量开销。

    【讨论】:

      【解决方案2】:

      几个选项:

      • cronjob:您可以设置您的 cronjob 以通过 SQL 脚本直接访问数据库(这可能是所有设置中最简单的解决方案)或首先通过您的 rails 应用程序(例如,如果您需要在更新数据库之前运行其他业务逻辑 - 您提到了一些关于基于用户作业更新数据库的内容)。对于后一种方法,请参阅此post

      • 后台任务:看看Starling/WorklingBackgroundrb。您可以使用其中任何一个来运行可以定期更新数据库的后台任务。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-12
        • 2013-12-12
        • 1970-01-01
        • 2013-12-22
        • 1970-01-01
        • 2021-01-30
        • 1970-01-01
        相关资源
        最近更新 更多