Og and the 'Composite' pattern

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

class Container < Item
  has_many :items, Item

class Image < Item; end
class Post < Item; end
class Folder < Container; end

But i failed to achieve this with Og :frowning:

Does ActiveRecords or DataMapper support this feature?


Partially solution. It’s possible to implement subject this way:

class Item
  property :name, String
  belongs_to :parent, Object

class Container < Item
  has_many :items, Item

class Folder < Item
  has_many :items, Item

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 … :frowning:

Thanks there Alexey

I love this post! I have a design need for exactly thing like (both)
and ‘Container’.

As well, I’d like to make a “generic” ‘Container’ that cna accept
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
base is a precursor.


2008/6/6 Alexey P. [email protected]:

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs