Hi, You might want to check out the Doodle rubygem at http://doodle.rubyforge.org/ . Here's an example of its use: daniel@daniel-desktop:~$ cat /tmp/doodle.rb require 'rubygems' require 'doodle' class List < Doodle::Base has :items, :collect => :item end class GroceryList < List # nothing added here. end my_list = GroceryList do item "Chunky bacon" item "Lettuce" item "Tomato" end p my_list.items daniel@daniel-desktop:~$ ruby /tmp/doodle.rb ["Chunky bacon", "Lettuce", "Tomato"] daniel@daniel-desktop:~$ Dan On Sun, Apr 20, 2008 at 7:09 PM, Chad Murphy <floppyformattingfrenzy / gmail.com> wrote: > Robert Klemme wrote: > > On 20.04.2008 23:37, Chad Murphy wrote: > > >> item :lettuce > >> item :potato > >> item :ham > >> end > >> > >> print Groceries.new > >> > >> The trouble I'm having is figuring out how to go about adding an > >> instance variable, which is an array, and will be updated using these > >> attr like methods (I don't know what these are called which is giving me > >> some trouble). > > > > You are looking for class methods. > > Thanks. > > > >> Is this possible to pull off? > > > > Yes, but I doubt it is what you want: you are asking for class methods > > to add items but you create an instance (Groceries.new). Where is the > > point in defining a list of items on class level and instantiate it > > multiple times? > > > > If you describe what you want to achieve, i.e. what (business) problem > > you are trying to solve we can come up with other suggestions that may > > be more appropriate. > > > > For example: this looks like a case for inheritance: > > > > class Grocery > > end > > > > class Lettuce < Grocery > > end > > > > class Potato < Grocery > > end > > ... > > > > With a little bit of meta programming you can then get all the > > subclasses of Grocery. > > I saw some code like this and tried playing around it. I think the > problem was that I had no idea whether it was something you could do in > order to abstract things from the sub class or something completely > different, but I realized you could do that with a method. > > > Kind regards > > > > robert > > Thanks again. > > > -- > Posted via http://www.ruby-forum.com/. > >