Rails缓存每天午夜到期

mon*_*ike 5 ruby-on-rails ruby-on-rails-4

有没有办法做类似的事情

Rails.cache.fetch("id..", expire_in: 1.day, expire_at: midnight) do
  #...
end
Run Code Online (Sandbox Code Playgroud)

谢谢!

Dyl*_*kow 8

没有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
Run Code Online (Sandbox Code Playgroud)

哪里expires_in_seconds会返回几秒钟(例如90559)

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

  • 为什么不只是“Time.current.end_of_day - Time.current”? (2认同)