6

有没有办法做类似的事情

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

谢谢!

4

3 回答 3

9

没有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.

于 2013-09-20T03:51:00.073 回答
0

您可以在创建它时设置过期时间

Rails.cache.write("你的密钥或 id", expires_in: 1.day)

于 2019-10-17T12:04:41.373 回答
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
 >> 

于 2020-09-10T06:01:09.783 回答