如何解决在特定时间间隔后过期会话变量的索引
我有一个ruby on rails应用程序,其中有多个会话变量,其中有一个特定的会话变量数组,我想在添加值后每10秒钟删除其值
例如,我有一个会话变量
session[:somename] = ["0","1","2","3"]
现在,我想在添加会话变量10秒后删除它们的索引,因此0
应该在被推入会话10秒后删除。有没有办法做到这一点?我可以明确设置一个会话的到期时间吗?还是有其他方法可以通过使用会话来实现此目的?
感谢您的帮助,在此先感谢
解决方法
简短的回答是“否”。
默认情况下,rails使用单个cookie将会话存储为序列化的哈希。 Cookie本身可以有一个到期时间,届时客户端将拒绝整个会话Cookie,并且不会将其发送回Rails。但是,没有内置的解决方案可以使会话中的单个值过期。
但是,如果您有点创意,可以将数组转换为一组对:
t = Time.current.to_i
["0","1","2","3"].map.with_index {|v,i| [v,t + ((i + 1) * 10) ]}
# => [["0",1597863985],["1",1597863995],["2",1597864005],["3",1597864015]]
第二个值只是该值过期的unix时间戳。然后,当您读回时,您将拒绝过期的值:
Time.now.then { |t| serialized.reject{ |(v,e)| Time.at(e) < t } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。