在ruby on rails中,在执行session[:foo] = nil
它时会留下:foo
在会话对象中命名的条目.如何从会话对象中删除单个条目?
它看起来像最简单的版本.所有商店(Cookie,File,ActiveRecord,...)都AbstractStore::SessionHash
用作包含数据的对象,不同的商店仅提供加载和保存AbstractStore::SessionHash
实例的方法.
AbstractStore::SessionHash
继承自Hash
,所以这遵循Hash#delete
方法:
session.delete(:key_to_delete)
实际上有一种方法可以从会话中删除一个值.和RichH一样,会话变量是一个CGI :: Session实例.输入类似的东西session[:foo]
实际上是@data
在会话对象的实例变量中查找该符号.该数据变量是一个哈希值.
编辑: CGI :: Session类中有一个数据实例变量.如果您转到文档并查看该[]=
方法的源代码,您将看到有一个@data
成员.
因此要删除session[:foo]
所有您需要做的就是@data
从会话内部访问该变量
session.data[:foo]
现在删除它:
session.data.delete :foo
一旦你这样做,你的会话变量就不应该有更多的foo.