I was struggling with the same thing, and in the end came up with
something like this:
class User
include DataMapper::Resource
has n, user_users
def friends
@friends ||= self.user_users.map {|ss| ss.friend}
end
def friended_by
@friended_by ||= UserUser.all(:friend_id => self.id).map {|ss| ss.user}
end
end
class UserUser
include DataMapper::Resource
property :user_id, Integer, :key => true
property :friend_id, Integer, :key => true
belongs_to :user, :class_name => "User", :child_key => [:user_id]
belongs_to :friend, :class_name => "User", :child_key => [:friend_id]
end
Most probably sub-optimal, but I'm not looking for optimal solutions in
the project that I'm working on. ;-)
I'm curious though if there's a more succinct way to do this. Because
afaics at the moment you can't do this sort of thing nicely in dm yet.
(With "nice" I mean it shouldn't be necessary to explicitly define class
UserUser and methods +friends+ and +friended_by+ in this example)
Lawrence
> Greetings!
>
> I am pretty new to DataMapper, I can't figure out how to do the
> following.
>
> I have a User model, a user can have friends, which themselves are
> users. How can I define this many-to-many relationship on the same
> model?
>
> Thanks!
> -- Sinan
> >
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"DataMapper" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/datamapper?hl=en
-~----------~----~----~----~------~----~------~--~---