# A weird database association

**URL:** <https://www.ruby-forum.com/t/a-weird-database-association/173397>\
**Category:** Rails\
**Created:** [August 8, 2009, 12:06am UTC](https://www.ruby-forum.com/t/a-weird-database-association/173397 "2009-08-08T00:06:12Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![jasonb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/a587f6/32.png) [@jasonb](https://www.ruby-forum.com/u/jasonb)\
**Post date:** [August 8, 2009, 12:06am UTC](https://www.ruby-forum.com/t/a-weird-database-association/173397/1 "2009-08-08T00:06:12Z")

</div>

I’m trying to figure out a way to create this relationship:

a user has many friends which are themselves users

I have an existing ‘users’ table in the database. I’ve created a  
‘friends’ database with:

id: integer  
user\_id: integer  
friend\_id: ineteger

I would like to create relationship so I could do something like:

friends\_array = user.friends

where friends\_array would be an array of ‘user’ objects.

---

<div class="post-metadata">

**Author:** ![jasonb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/a587f6/32.png) [@jasonb](https://www.ruby-forum.com/u/jasonb)\
**Post date:** [August 8, 2009, 9:50am UTC](https://www.ruby-forum.com/t/a-weird-database-association/173397/2 "2009-08-08T09:50:57Z")

</div>

2009/8/7 Jason B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> friend\_id: ineteger
> 
> I would like to create relationship so I could do something like:
> 
> friends\_array = user.friends
> 
> ## where friends\_array would be an array of ‘user’ objects.

These might prove useful  
[http://dizzy.co.uk/ruby\_on\_rails/contents/self-referential-table-joins](http://dizzy.co.uk/ruby_on_rails/contents/self-referential-table-joins)  
[http://railsforum.com/viewtopic.php?id=33161](http://railsforum.com/viewtopic.php?id=33161)

> **[GitHub - swemoney/has\_many\_friends: A plugin for Rails that allows you to create...](https://github.com/swemoney/has_many_friends/tree/master)**
>
> master

Colin

---

<div class="post-metadata">

**Author:** ![jasonb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/a587f6/32.png) [@jasonb](https://www.ruby-forum.com/u/jasonb)\
**Post date:** [August 8, 2009, 12:11am UTC](https://www.ruby-forum.com/t/a-weird-database-association/173397/3 "2009-08-08T00:11:59Z")

</div>

Jason,

Start here:

- 

> **[ActiveRecord::Associations::ClassMethods](https://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#M001836)**
>
> Associations are a set of macro-like class methods for tying objects together through foreign keys.

Robby

On Fri, Aug 7, 2009 at 3:06 PM, Jason  
Burgett[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> friend\_id: ineteger

–  
Robby R.  
Chief Evangelist, Partner

PLANET ARGON, LLC  
design // development // hosting w/Ruby on Rails

> **[Planet Argon](https://www.planetargon.com/)**
>
> Planet Argon is a Ruby on Rails development agency specializing in maintenance and support for existing Rails apps. Based in Portland, OR, Planet Argon has been a member of the Rails community since 2004.

[http://robbyonrails.com/](http://robbyonrails.com/)  
[http://twitter.com/planetargon](http://twitter.com/planetargon)  
aim: planetargon

+1 503 445 2457  
+1 877 55 ARGON [toll free]  
+1 815 642 4068 [fax]

---

<div class="post-metadata">

**Author:** ![jasonb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/a587f6/32.png) [@jasonb](https://www.ruby-forum.com/u/jasonb)\
**Post date:** [August 8, 2009, 6:56pm UTC](https://www.ruby-forum.com/t/a-weird-database-association/173397/4 "2009-08-08T18:56:38Z")

</div>

Thanks a ton. This one:

[http://dizzy.co.uk/ruby\_on\_rails/contents/self-referential-table-joins](http://dizzy.co.uk/ruby_on_rails/contents/self-referential-table-joins)

did the trick!

Colin L. wrote:

> 2009/8/7 Jason B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):
> 
> > friend\_id: ineteger
> > 
> > I would like to create relationship so I could do something like:
> > 
> > friends\_array = user.friends
> > 
> > ## where friends\_array would be an array of ‘user’ objects.
> 
> These might prove useful  
> [http://dizzy.co.uk/ruby\_on\_rails/contents/self-referential-table-joins](http://dizzy.co.uk/ruby_on_rails/contents/self-referential-table-joins)  
> [http://railsforum.com/viewtopic.php?id=33161](http://railsforum.com/viewtopic.php?id=33161)  
> [GitHub - swemoney/has\_many\_friends: A plugin for Rails that allows you to create friend relationships without the need of 2 friendship rows in their table. (Hasn't been updated in a long time.)](http://github.com/swemoney/has_many_friends/tree/master)
> 
> Colin
