Rails ORM Help

In my scenario, I have two tables namely; contacts and contacts_users. Table contacts consists of a primary key namely id and contacts_users has fields; id, contact_id, peer_id and status.

contacts_users is basically the recursive relation of a contact to its peers, which he/she invited and vice versa. In other words, in one case, the id of a person lies in the contact_id field of contacts_users and in other case the id of same person lies in peer_id field. Moreover, peer_id and contact_id of contacts_users constitute a composite key. So, in contacts_users model i defined the said scenario like; validate_uniqueness_of :contact_id, :scope=>peer_id Which means; if A adds B, then A is a contact of B and B is a contact of A as well, and the relation cannot be replicated.

Now what could be the relation of contacts_users and contacts tables, so that I could do contacts.contacts_users and get all the contacts of person A rather doing ContactsUsers.find_by_contact_id_or_peer_id?

Please Help.

You could look for a Gem that handles Friendship. There are a few.

You could use and ORM called datamapper