# How do you delete a session variable?

**URL:** <https://www.ruby-forum.com/t/how-do-you-delete-a-session-variable/60899>\
**Category:** Rails\
**Created:** [May 18, 2006, 11:58am UTC](https://www.ruby-forum.com/t/how-do-you-delete-a-session-variable/60899 "2006-05-18T11:58:16Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![alder](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/a4c791/32.png) [@alder](https://www.ruby-forum.com/u/alder)\
**Post date:** [May 18, 2006, 11:58am UTC](https://www.ruby-forum.com/t/how-do-you-delete-a-session-variable/60899/1 "2006-05-18T11:58:16Z")

</div>

Hi

Let’s say we set session[:foo] = ‘bar’. Now we want to remove the :foo  
key completely. How do you do that?

Appearantly, session is a CGI::Session [1] instance, so it doesn’t  
have #delete like Hash. I tried:

session[:foo] = nil

But then debug(session) shows an empty :foo key. I’d like to remove  
that key, as my session is already pretty crowded. Is it possible?

–  
-Alder

[1] [http://ruby-doc.org/core/classes/CGI/Session.html](http://ruby-doc.org/core/classes/CGI/Session.html)

---

<div class="post-metadata">

**Author:** ![alder](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/a4c791/32.png) [@alder](https://www.ruby-forum.com/u/alder)\
**Post date:** [May 18, 2006, 4:46pm UTC](https://www.ruby-forum.com/t/how-do-you-delete-a-session-variable/60899/2 "2006-05-18T16:46:25Z")

</div>

On Thursday, May 18, 2006, at 11:56 AM, Alder G. wrote:

> But then debug(session) shows an empty :foo key. I’d like to remove  
> that key, as my session is already pretty crowded. Is it possible?
> 
> –  
> -Alder
> 
> [1] [http://ruby-doc.org/core/classes/CGI/Session.html](http://ruby-doc.org/core/classes/CGI/Session.html)
> 
> * * *
> 
> Rails mailing list  
> removed\_email\_address@domain.invalid  
> [http://lists.rubyonrails.org/mailman/listinfo/rails](http://lists.rubyonrails.org/mailman/listinfo/rails)

Will session.delete[“foo”] work?

---

<div class="post-metadata">

**Author:** ![alder](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/a4c791/32.png) [@alder](https://www.ruby-forum.com/u/alder)\
**Post date:** [May 18, 2006, 5:02pm UTC](https://www.ruby-forum.com/t/how-do-you-delete-a-session-variable/60899/3 "2006-05-18T17:02:23Z")

</div>

see [http://wiki.rubyonrails.org/rails/pages/HowtoWorkWithSessions](http://wiki.rubyonrails.org/rails/pages/HowtoWorkWithSessions) for  
your  
answer.

On 18 May 2006 14:44:35 -0000, Richard W. \<

---

<div class="post-metadata">

**Author:** ![alder](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/a4c791/32.png) [@alder](https://www.ruby-forum.com/u/alder)\
**Post date:** [May 18, 2006, 5:26pm UTC](https://www.ruby-forum.com/t/how-do-you-delete-a-session-variable/60899/4 "2006-05-18T17:26:40Z")

</div>

On 18 May 2006 14:44:35 -0000, Richard W.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > session[:foo] = nil  
> > removed\_email\_address@domain.invalid  
> > [http://lists.rubyonrails.org/mailman/listinfo/rails](http://lists.rubyonrails.org/mailman/listinfo/rails)
> 
> Will session.delete[“foo”] work?

No, since the object returned by #session isn’t a Hash - it’s a  
Hash-like instance of CGI::Session. So it doesn’t have the various  
Hash intance methods. It does have a #hash method btw, but it does  
something entirely different (“Delete the session from storage. Also  
closes the storage.”)

---

<div class="post-metadata">

**Author:** ![alder](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/a4c791/32.png) [@alder](https://www.ruby-forum.com/u/alder)\
**Post date:** [May 18, 2006, 5:29pm UTC](https://www.ruby-forum.com/t/how-do-you-delete-a-session-variable/60899/5 "2006-05-18T17:29:52Z")

</div>

On 5/18/06, Chris H. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> see  
> [http://wiki.rubyonrails.org/rails/pages/HowtoWorkWithSessions](http://wiki.rubyonrails.org/rails/pages/HowtoWorkWithSessions)  
> for your answer.

"  
Completely removing a previously-set key/value pair:  
[not possible]  
"

Ok, guess it’s better than no answer 🙂

Thanks.
