DataMapper: Hierarchy System
Author |
Message |
DtY
|
Posted: Mon Jun 29, 2009 11:10 am Post subject: DataMapper: Hierarchy System |
|
|
What I am trying to achieve is a hierarchy of categories. What it needs to do is have categories, each with an optional parent, and optional children. Then, have an easy way to get all the categories that don't have a parent (top level categories), as well as get all the children of a category (which wouldn't be trouble at all).
What I was thinking was making a special category called top level or something, which would be it's own parent (like the object class in Ruby), and then everything in there would be a subcategory of that. Is that the best method?
So something like this:
Ruby: | class Category
include DataMapper::Resource
property :id, Serial
property :name, String
has 1, :parent #Not sure on how to make is have a Category, but not accessed through .category
has n, :children #Same thing here
end |
|
|
|
|
|
|
Sponsor Sponsor
|
|
|
DtY
|
Posted: Mon Jun 29, 2009 3:15 pm Post subject: RE:DataMapper: Hierarchy System |
|
|
Okay, I got it figured out. Apparently one to many relationships can be empty, so top level categories have the parent nil.
Ruby: | require 'rubygems'
require 'dm-core'
require 'dm-validations'
require 'dm-timestamps'
require 'dm-types'
DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/db.sqlite3")
class Category
include DataMapper::Resource
property :id, Serial
property :name, String
#Hierarchy
belongs_to :parent, :class_name=>'Category', :child_key=>[:parent_key]
has n, :children, :class_name=>'Category'
end
def Category.topLevels
all :parent_key=>nil
end
DataMapper.auto_upgrade! |
|
|
|
|
|
|
gianni
|
Posted: Tue Jul 14, 2009 4:52 pm Post subject: RE:DataMapper: Hierarchy System |
|
|
Isn't DataMapper awesome? |
|
|
|
|
|
DtY
|
Posted: Sat Jul 18, 2009 9:44 am Post subject: RE:DataMapper: Hierarchy System |
|
|
So much! |
|
|
|
|
|
|
|