I have a model named User, and the mysql table is users.
Every user can have many friends. of course, every friend is a user.
So, it's a relationship from user to user.
how to model this?
User has_and_belongs_to_may :users?
then how to define the table 'users_users' for this relationship.
I have a model named User, and the mysql table is users.
Every user can have many friends. of course, every friend is a user.
So, it's a relationship from user to user.
how to model this?
User has_and_belongs_to_may :users?
then how to define the table 'users_users' for this relationship.
Use the has_and_belongs_to_many :join_table option and name it something
else.
Next, the Friendship concept in a social app might be too important to hide
its join table. "Friends since 2008", "BFF", "sworn enemies", etc. Maybe the
joining table should be a Model of its own. Then User gets...
I have a model named User, and the mysql table is users.
Every user can have many friends. of course, every friend is a user.
So, it's a relationship from user to user.
how to model this?
User has_and_belongs_to_may :users?
then how to define the table 'users_users' for this relationship.
Use the has_and_belongs_to_many :join_table option and name it something
else.
Next, the Friendship concept in a social app might be too important to hide
its join table. "Friends since 2008", "BFF", "sworn enemies", etc. Maybe the
joining table should be a Model of its own. Then User gets...
If you've got a Friendship model, though, you'd probably want
something like:
has_many :friendships
and then friends through friendships... except you'll run into the
issue of the symmetry (or lack thereof) of the friendships table,
which of course can't have two user_id fields. You can deal with this
by having a "friend1_id" and "friend2_id" (or some such thing) field,
and a concept of who has befriended whom. There's some examples of
this in the comments at:
http://blog.hasmanythrough.com/2006/4/21/self-referential-through
I imagine you could also do something with one friendship row and some
finder SQL, but that will have to await the second cup of coffee