gpt4 book ai didi

ruby-on-rails - Rails 每天给变量赋值一次

转载 作者:行者123 更新时间:2023-12-01 23:45:27 27 4
gpt4 key购买 nike

我有一个每天更新一次的数据库。而不是每次用户发出请求时都在我的 Controller 中查询它,例如:

@rainy = Place.where("forecast = 'rain'")

我能否在数据库更新后每天只运行一次该查询,并使值在我的 Controller 可以访问的变量中可用?

最佳答案

可以,但这并不是真正好的解决方案。 Rails 已经有一种方法可以跨请求持久保存昂贵的计算结果:缓存。

使用

@rainy = Rails.cache.fetch(:rainy, expires_in: 1.day) do
Place.where(forecast: 'rain')
end

如果您需要值在每天的特定时间过期,您可以定义一个 rake 任务来计算该值,然后使缓存过期:

# lib/tasks/rainy.rake
task :compute_rainy
# ... whatever comutation produces your database value ...

# Then, expire the cache for :rainy so that the next
# request loads (and caches) the new value
Rails.cache.delete(:rainy)
end

关于ruby-on-rails - Rails 每天给变量赋值一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29520646/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com