I couldn't find an example at datamapper.org /docs for a parent child relationship.
After a little searching, I found the answer in the integration tests. Here is the example:
class Node
include DataMapper::Resource
def self.default_repository_name
ADAPTER
end
property :id, Integer, :serial => true
property :name, String
has n, :children, :class_name => 'Node', :child_key => [ :parent_id ]
belongs_to :parent, :class_name => 'Node', :child_key => [ :parent_id ]
end
Hope that helps someone else.
6 comments:
It looks more like a tree relationship then a parent/child relationship.
"In a hierarchical data model, data is organized into a tree-like structure. The structure allows repeating information using parent/child relationships: each parent can have many children but each child only has one parent."
http://en.wikipedia.org/wiki/Hierarchical_model
This is very helpful, though I'm not too familiar with datamapper. I'm trying to see if it'll fit what I need.
Could this be expanded to the parent becomes,
has n, :children, :class_name => 'Node', :child_key => [:child_id]
has n, :parents, :class_name => 'Node', :child_key => [:parent_id ]
Something like that would work with activerecord, but, like I said I'm not too familiar.
Cheers
scott,
Actually I believe the syntax you suggested is what I first tried, and did not work, and caused the searching.
DataMapper is still somewhat young, so check the integration tests referenced in the post for the most recent developments.
Ah, I figured it out.
I didn't write a spec for it, nor would it stop any nonsensical inbred relationships, but:
pastie.
Why not just use the dm-is-tree plugin?
http://github.com/datamapper/dm-more/tree/master/dm-is-tree
Post a Comment