# Self.id access inside model

**URL:** <https://www.ruby-forum.com/t/self-id-access-inside-model/80808>\
**Category:** Rails\
**Created:** [December 31, 2006, 12:38am UTC](https://www.ruby-forum.com/t/self-id-access-inside-model/80808 "2006-12-31T00:38:31Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Chad](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/ecccb3/32.png) [@Chad](https://www.ruby-forum.com/u/Chad)\
**Post date:** [December 31, 2006, 12:38am UTC](https://www.ruby-forum.com/t/self-id-access-inside-model/80808/1 "2006-12-31T00:38:31Z")

</div>

Happy Holidays!

I have a Member.rb model with the following line:

has\_many :friends, :class\_name =\> “Member”, :finder\_sql =\> "  
SELECT members.\*  
FROM members, friendships  
WHERE (members.id = friendships.member\_id AND friendships.friend\_id =  
#{self.id})  
OR (members.id = friendships.friend\_id AND friendships.member\_id =  
#{self.id})"

When calling @member.friends, the above code translates #{self.id} to  
something crazy like 53931600 instead of the @member.id which is 2.

Any ideas why?

Thanks,  
Chad

---

<div class="post-metadata">

**Author:** ![Chad](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/ecccb3/32.png) [@Chad](https://www.ruby-forum.com/u/Chad)\
**Post date:** [December 31, 2006, 1:18pm UTC](https://www.ruby-forum.com/t/self-id-access-inside-model/80808/2 "2006-12-31T13:18:20Z")

</div>

Chad wrote:

> When calling @member.friends, the above code translates #{self.id} to  
> something crazy like 53931600 instead of the @member.id which is 2.
> 
> Any ideas why?

Yeah, the string is evaluated when first encountered, ie when your  
Member class is loaded. At that point, I imagine self is the class,  
which is why you get a weird self.id.

To prevent this use single quotes (') around your string instead of  
double quotes (").

–  
Jakob S. - [http://mentalized.net](http://mentalized.net)
