当前位置:  开发笔记 > 后端 > 正文

如何在rails会话中清除ruby中的单个条目?

如何解决《如何在rails会话中清除ruby中的单个条目?》经验,为你挑选了2个好方法。

在ruby on rails中,在执行session[:foo] = nil它时会留下:foo在会话对象中命名的条目.如何从会话对象中删除单个条目?



1> Daniel Beard..:

它看起来像最简单的版本.所有商店(Cookie,File,ActiveRecord,...)都AbstractStore::SessionHash用作包含数据的对象,不同的商店仅提供加载和保存AbstractStore::SessionHash实例的方法.

AbstractStore::SessionHash继承自Hash,所以这遵循Hash#delete方法:

session.delete(:key_to_delete)



2> vrish88..:

实际上有一种方法可以从会话中删除一个值.和RichH一样,会话变量是一个CGI :: Session实例.输入类似的东西session[:foo]实际上是@data在会话对象的实例变量中查找该符号.该数据变量是一个哈希值.

编辑: CGI :: Session类中有一个数据实例变量.如果您转到文档并查看该[]=方法的源代码,您将看到有一个@data成员.

因此要删除session[:foo]所有您需要做的就是@data从会话内部访问该变量

   session.data[:foo]

现在删除它:

   session.data.delete :foo

一旦你这样做,你的会话变量就不应该有更多的foo.


这不再起作用(在Rails 3.1中).
推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有