# Newbie alert! diff between @session\['user'\].id and @session

**URL:** <https://www.ruby-forum.com/t/newbie-alert-diff-between-session-user-id-and-session/83437>\
**Category:** Rails\
**Created:** [January 26, 2007, 1:23am UTC](https://www.ruby-forum.com/t/newbie-alert-diff-between-session-user-id-and-session/83437 "2007-01-26T01:23:42Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![newtorails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/f4b2a3/32.png) [@newtorails](https://www.ruby-forum.com/u/newtorails)\
**Post date:** [January 26, 2007, 1:23am UTC](https://www.ruby-forum.com/t/newbie-alert-diff-between-session-user-id-and-session/83437/1 "2007-01-26T01:23:42Z")

</div>

I struggled for sometime to use @session[:user].id while using  
LoginGenerator to retrieve id of the logged in user. In the end I could  
make it work with @session[‘user’].id. Shouldn’t the two approaches be  
same?

thanks.

---

<div class="post-metadata">

**Author:** ![newtorails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/f4b2a3/32.png) [@newtorails](https://www.ruby-forum.com/u/newtorails)\
**Post date:** [January 26, 2007, 2:17am UTC](https://www.ruby-forum.com/t/newbie-alert-diff-between-session-user-id-and-session/83437/2 "2007-01-26T02:17:46Z")

</div>

Hi, you should be able to use script console to determine if they are  
equivalent. For example,

irb(main):001:0\> a = {}  
=\> {}  
irb(main):002:0\> a[:this] = ‘foo’  
=\> “foo”  
irb(main):003:0\> a[:this]  
=\> “foo”  
irb(main):004:0\> a[‘this’] = ‘foo2’  
=\> “foo2”  
irb(main):005:0\> a[:this]  
=\> “foo”  
irb(main):006:0\> a[:this] == a[‘this’]  
=\> false

Good luck,

-Conrad

---

<div class="post-metadata">

**Author:** ![newtorails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/f4b2a3/32.png) [@newtorails](https://www.ruby-forum.com/u/newtorails)\
**Post date:** [January 26, 2007, 2:28am UTC](https://www.ruby-forum.com/t/newbie-alert-diff-between-session-user-id-and-session/83437/3 "2007-01-26T02:28:47Z")

</div>

Ok, makes sense… Thanks…  
i think loginGenerator by default generates the code that use quotes  
for array reference.

---

<div class="post-metadata">

**Author:** ![newtorails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/f4b2a3/32.png) [@newtorails](https://www.ruby-forum.com/u/newtorails)\
**Post date:** [January 26, 2007, 3:53am UTC](https://www.ruby-forum.com/t/newbie-alert-diff-between-session-user-id-and-session/83437/4 "2007-01-26T03:53:55Z")

</div>

Actually, this may be misleading in the case of session, params, and  
other certain ‘special’ hashes that Rails uses. Rails has a  
“HashWithIndifferentAccess” that allows accesing something by symbol  
_and_ key, so that session[:foo] == session[‘foo’]. I’m not positive  
that session uses that hash, but you should test this right in a  
controller and not just in a plain irb session.

- Rob

---

<div class="post-metadata">

**Author:** ![newtorails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/f4b2a3/32.png) [@newtorails](https://www.ruby-forum.com/u/newtorails)\
**Post date:** [January 26, 2007, 4:20am UTC](https://www.ruby-forum.com/t/newbie-alert-diff-between-session-user-id-and-session/83437/5 "2007-01-26T04:20:56Z")

</div>

A note: accessing the session with @session[] has been deprecated for  
a while now  
(a few months). Try using just ‘session[:user]’.

–Matt

On 1/25/07, newtorails. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> 

–  
Matt J.  
removed\_email\_address@domain.invalid  
President/Technical Director, Acme Art Company ([acmeartco.org](http://acmeartco.org))

---

<div class="post-metadata">

**Author:** ![newtorails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/f4b2a3/32.png) [@newtorails](https://www.ruby-forum.com/u/newtorails)\
**Post date:** [January 26, 2007, 8:12pm UTC](https://www.ruby-forum.com/t/newbie-alert-diff-between-session-user-id-and-session/83437/6 "2007-01-26T20:12:37Z")

</div>

Matt, changing @session to session[…] doesn’t change the situation…  
let me know if you see anything different.

---

<div class="post-metadata">

**Author:** ![newtorails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/f4b2a3/32.png) [@newtorails](https://www.ruby-forum.com/u/newtorails)\
**Post date:** [January 26, 2007, 2:09pm UTC](https://www.ruby-forum.com/t/newbie-alert-diff-between-session-user-id-and-session/83437/7 "2007-01-26T14:09:18Z")

</div>

Hi, my test using IRB was consistent with my test using sessions  
within a controller. Thus, the following isn’t equal:

session[:user] != session[‘user’]

In general, they implemented session as global hash within Rails.

-Conrad
