Trying to Create a Friend System

I'm trying to add the ability to add other users of my app as friends (to follow their recent activity, etc.), however I can't grasp what ActiveRecord association should be used. Basically, I've tried to do this:

class User < ActiveRecord::Base   has_one :user_picture   has_many :scores   has_many :friendships end

class Friendship < ActiveRecord::Base   belongs_to :user end

And my friendships table looks like this: create_table :friendships, :force => true do |t|    t.column "user_id", :integer, :null => false    t.column "friend_id", :integer, :null => false end

User_id holds the ID of the user that added another user as friend, and friend_id is the ID of the user that was added as a friend (sorry if this sentence didn't make much sense).

All I need to do is track who is friends of who, and see if their friendship is mutual. If I keep working on it, the code above can probably work, but it doesn't seem to Railsy. So if you can, please let me know how you would pull this sort of thing off.

Thanks for taking a look, Tony

I'm no guru on Railsyness, but I wonder if the tables you describe are capturing all of what's happening in your relationships. Your last paragraph implies that friendship is mutual -- and thus exists only when both requested and accepted, requiring two steps to create. As I read this, the friendships table holds both requests and accepted friendships. Separating them might make this easier and more transparent to manage...