# Inference?

**URL:** <https://www.ruby-forum.com/t/inference/131768>\
**Category:** Rails\
**Created:** [March 13, 2008, 3:24am UTC](https://www.ruby-forum.com/t/inference/131768 "2008-03-13T03:24:21Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![grayson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/c77e96/32.png) [@grayson](https://www.ruby-forum.com/u/grayson)\
**Post date:** [March 13, 2008, 3:24am UTC](https://www.ruby-forum.com/t/inference/131768/1 "2008-03-13T03:24:21Z")

</div>

I have the typical user, friendship model that does a has\_many :through  
Self-referential, exactly like this:

> **[The real John Ford](https://johnford.is/)**
>
> I’m doing the things I love.

I have the following data in the friendships table

user\_id = 5  
friend\_id = 10

User.find(5).friends gives me the user 10  
User.find(10).friends gives me []

Is that right? Should I have two records for each friendship?

Thanks,

GP

---

<div class="post-metadata">

**Author:** ![grayson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/c77e96/32.png) [@grayson](https://www.ruby-forum.com/u/grayson)\
**Post date:** [March 13, 2008, 4:08am UTC](https://www.ruby-forum.com/t/inference/131768/2 "2008-03-13T04:08:21Z")

</div>

> User.find(5).friends gives me the user 10  
> User.find(10).friends gives me []
> 
> Is that right? Should I have two records for each friendship?

May want to consider using has\_many\_friends… really easy to setup,  
some  
nice helper methods tossed in as well…

[http://agilewebdevelopment.com/plugins/has\_many\_friends](http://agilewebdevelopment.com/plugins/has_many_friends)

---

<div class="post-metadata">

**Author:** ![grayson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/c77e96/32.png) [@grayson](https://www.ruby-forum.com/u/grayson)\
**Post date:** [March 14, 2008, 5:38pm UTC](https://www.ruby-forum.com/t/inference/131768/3 "2008-03-14T17:38:10Z")

</div>

Greater point, thank you. The methods request/accept/etc work great at  
the model level but when I try to expose that functionality through a  
FriendshipsController unfortunately it seems to cause an infinit loop  
and I end up with this in my development.log

e[4;36;1mUser Load (0.000000)e[0m e[0;1mSELECT \* FROM `users` WHERE  
(`users`.`id` = 11) e[0m  
e[4;35;1mUser Load (0.000000)e[0m e[0mSELECT \* FROM `users` WHERE  
(`users`.`id` = 11) e[0m  
e[4;36;1mUser Load (0.000000)e[0m e[0;1mSELECT \* FROM `users` WHERE  
(`users`.`id` = 11) e[0m  
e[4;35;1mUser Load (0.000000)e[0m e[0mSELECT \* FROM `users` WHERE  
(`users`.`id` = 11) e[0m  
e[4;36;1mUser Load (0.000000)e[0m e[0;1mSELECT \* FROM `users` WHERE  
(`users`.`id` = 11) e[0m  
e[4;35;1mUser Load (0.000000)e[0m e[0mSELECT \* FROM `users` WHERE  
(`users`.`id` = 11) e[0m  
e[4;36;1mUser Load (0.000000)e[0m e[0;1mSELECT \* FROM `users` WHERE  
(`users`.`id` = 11) e[0m  
e[4;35;1mUser Load (0.000000)e[0m e[0mSELECT \* FROM `users` WHERE  
(`users`.`id` = 11) e[0m  
e[4;36;1mUser Load (0.000000)e[0m e[0;1mSELECT \* FROM `users` WHERE  
(`users`.`id` = 11) e[0m  
e[4;35;1mUser Load (0.000000)e[0m e[0mSELECT \* FROM `users` WHERE  
(`users`.`id` = 11) e[0m  
e[4;36;1mUser Load (0.000000)e[0m e[0;1mSELECT \* FROM `users` WHERE  
(`users`.`id` = 11) e[0m  
e[4;35;1mUser Load (0.015000)e[0m e[0mSELECT \* FROM `users` WHERE  
(`users`.`id` = 11) e[0m  
e[4;36;1mUser Load (0.000000)e[0m e[0;1mSystemStackError: stack  
level too deep: SELECT \* FROM `users` WHERE (`users`.`id` = 11) e[0m  
e[4;35;1mUser Load (0.000000)e[0m e[0mRuntimeError: Packets out of  
order: 1\<\>3: SELECT \* FROM `users` WHERE (`users`.`id` = 11) e[0m

Philip H. wrote:

> > User.find(5).friends gives me the user 10  
> > User.find(10).friends gives me []
> > 
> > Is that right? Should I have two records for each friendship?
> 
> May want to consider using has\_many\_friends… really easy to setup,  
> some  
> nice helper methods tossed in as well…
> 
> [http://agilewebdevelopment.com/plugins/has\_many\_friends](http://agilewebdevelopment.com/plugins/has_many_friends)
