Forum: Ruby on Rails Problems w/ User having many friends

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Clem R. (Guest)
on 2009-01-15 06:25
This seems so easy but I keep hitting a brick wall on this.

I have this modeling:

[code]
 class User < ActiveRecord::Base
   has_many :friendships
   has_many :friends, :through => :friendships #...
 end

 class Friendship < ActiveRecord::Base
   belongs_to :user
   belongs_to :friend, :class_name => 'User', :foreign_key =>
'friend_id'
end
[/code]

I have these 2 records in the friends table

user_id, friend_id
   3         4
   3         5

Now when I try to select all friends that belong to User of id 3, using
this select I get one record instead of 2:

@users = User.find:all, :include=>[:friendships],
:conditions=>["friendships.user_id=?",3])

Any ideas how I can model this and query this correctly to get both
records belonging to User 3?

Thanks a whole lot!

Clem
Gustavo Scanferla (Guest)
on 2009-01-15 12:18
(Received via mailing list)
I'm not an expert, but:

Try finding the User.friends instead of passing conditions manually.

@users = User.friends.find(:all)

I've never used the ":through" like you did with "friendships"
If the code above doesn't work try this:
{I guess this is the syntax based on the "through relationship")

@users = User.friendships.friends.find(:all)


You can do some edit in the route file, and see waht you want by
accessing this URLs:
(doesn't need controller stuff)

example.com/users/3/friends

or

example.com/users/3/frienships/friends (again, I don't know about the
":through" thing)

The code should be:

map.resources :users, :has_many => :friends, :through => :friendships

or just, I don't know:

map.resources :users, :has_many => :friends

Thanks
This topic is locked and can not be replied to.