Hello, is there a way to implement the 'Composite' pattern in Og? Probably it should looks like this: class Item property :name, String belongs_to :parent, Item end class Container < Item has_many :items, Item end class Image < Item; end class Post < Item; end class Folder < Container; end But i failed to achieve this with Og :( P.S. Does ActiveRecords or DataMapper support this feature? Thanks!
on 2008-06-05 21:55
on 2008-06-05 22:03
Partially solution. It's possible to implement subject this way: class Item property :name, String belongs_to :parent, Object end class Container < Item has_many :items, Item end class Folder < Item has_many :items, Item end But, there are major disadvantages: - Code duplication, each 'Container' should explicitly include 'has_many ...'. - Instead of 'Item' you forced to use 'Container::Item' and 'Folder::Item' and remember about it. - Instead of one 'Item' table you got two distinct 'container_item' and 'folder_item' tables. So, this is not the best solution ... :(
on 2008-06-07 20:51
Thanks there Alexey I love this post! I have a design need for exactly thing like (both) 'Item' and 'Container'. As well, I'd like to make a "generic" 'Container' that cna accept 'Items" sub-clases too. I'd like though to do ... *class *Data_Table_stuff *property* subclass-of-Item *property* subclass-of-Container *end *# Data_Table_stuff I'll admit that I'm sitting back on this. My issuer -- Still some solid Og base is a precursor. :-) 2008/6/6 Alexey Petrushin <firstname.lastname@example.org>: