Rails缓存每天午夜到期

时间:2013-09-20 03:44:28

标签: ruby-on-rails ruby-on-rails-4

有没有办法做类似

的事情
Rails.cache.fetch("id..", expire_in: 1.day, expire_at: midnight) do
  #...
end

谢谢!

3 个答案:

答案 0 :(得分:7)

没有expires_at选项,但您可以快速计算所需到期时间与当前时间之间的秒数。假设你的意思是“在明天结束时到期”,你可以这样做:

expires_in_seconds = Time.now.end_of_day + 1.day - Time.now
Rails.cache.fetch("id...", expires_in: expires_in_seconds) do
  #...
end

expires_in_seconds会返回几秒钟(例如90559

如果你的意思是“今天结束”,那就是Time.now.end_of_day - Time.now

答案 1 :(得分:0)

如果想要整数,请小心不要小数点...

>_ bundle exec rails console
Loading development environment (Rails 6.0.3.2)
 >> Time.now.end_of_day + 1.day - Time.now
169207.001996682
 >> (Time.now.end_of_day + 1.day - Time.now).to_i
169204
 >> 

答案 2 :(得分:-1)

您可以在创建时设置到期时间

Rails.cache.write(“您的密钥或ID”,expires_in:1.day)