rails-如何根据时间/日期更新属性

Posted

技术标签:

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

几个选项:

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

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

【讨论】:

以上是关于rails-如何根据时间/日期更新属性的主要内容,如果未能解决你的问题,请参考以下文章

如何根据最近的日期属性获取两个字段?

在 Rails 6 中更新底层模型时如何使动作缓存过期?

如何根据工作日Ruby on Rails显示数据

如何根据搜索关键字 rails 从 2 个表中获取数据

根据我在 rails/react 应用程序上的 api 调用状态更新我的视图

如何根据包含的时间属性将子标题添加到 div?