【发布时间】:2021-04-20 17:29:14
【问题描述】:
在我的应用程序中,如果未通过法律测试,则可能会阻止用户 - 这意味着用户模型将其状态从活动更改为非活动user.status = 'inactive'。业务要求是在 3 天后将状态恢复为活动状态。
我知道我可以使用如下的 cron 作业:
every 1.day, :at => '12:00 am' do
User.where(status_updated_at: Date.today <= 3.days.ago)
.update_all(status: 'active')
end
但不是搜索整个用户数据库,也许还有另一种更好的方法来实现这一点?
【问题讨论】:
-
你在使用 sidekiq、resque、delayed_job 吗?一种解决方案是在 3 天后专门为该用户安排一项工作,使其再次处于活动状态。我为此使用github.com/resque/resque-scheduler。
-
这还没有指定,但我可能会使用delayed_job。好的,我将拥有 1k 个用户,这可能与 cron 作业相同。我看不出有什么区别。
-
“搜索整个用户数据库” – 该查询运行多长时间?
-
@Stefan 该应用程序处于早期阶段,我不能说,但仅在数据库中搜索这不是一个“非常可扩展”的解决方案
-
标签: ruby-on-rails ruby