有没有办法做类似
的事情Rails.cache.fetch("id..", expire_in: 1.day, expire_at: midnight) do
#...
end
谢谢!
答案 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)