在做session[:foo] = nil当Ruby on Rails的离开在会话对象命名:foo的条目。你怎么能摆脱从会话对象单次入境的?

有帮助吗?

解决方案

其实,有一种方式来获得删除该会话的值。就像RichH说,会话变量是CGI :: Session实例。当输入类似session[:foo]它实际上是在寻找那象征了在会话对象@data实例变量。数据变量是散列。

修改有一个在CGI :: Session类数据实例变量。如果你去文档和看为[]=方法的源代码你会看到,有一个@data构件。

所以删除session[:foo]所有你需要做的就是访问从会话中@data变量

   session.data[:foo]

现在将其删除:

   session.data.delete :foo

一旦你做到这一点,应该有你的会话变量不富。

其他提示

它看起来像在最简单的版本的作品。所有商店(饼干,文件,ActiveRecord的,...)使用AbstractStore::SessionHash作为包含该数据,则不同的商店提供仅加载和保存AbstractStore::SessionHash实例的装置的对象。

AbstractStore::SessionHashHash继承,所以这推迟到Hash#delete方法:

session.delete(:key_to_delete)
scroll top