[Nitro] Og and the 'Composite' pattern.

0 views
Skip to first unread message

Alexey Petrushin

unread,
Jun 5, 2008, 3:55:00 PM6/5/08
to nitro-...@rubyforge.org
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!
--
Posted via http://www.ruby-forum.com/.
_______________________________________________
Nitro-general mailing list
Nitro-...@rubyforge.org
http://rubyforge.org/mailman/listinfo/nitro-general

Alexey Petrushin

unread,
Jun 5, 2008, 4:03:46 PM6/5/08
to nitro-...@rubyforge.org
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 ... :(

* William

unread,
Jun 7, 2008, 2:51:05 PM6/7/08
to nitro-...@rubyforge.org
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 <li...@ruby-forum.com>:



--
aloha,
\_w_/
Reply all
Reply to author
Forward
0 new messages