On Nov 24, 12:27 pm, dusty <dusty.do... / gmail.com> wrote: > On Nov 23, 11:52 pm, Ge Bro <booms... / gmail.com> wrote: > > > > > Hey all, > > this is a total newbie question, i'm just starting to learn Ruby. > > > here's the thing: i've got a couple of arrays with several items in > > each. I'd like to use a block to iterate through each array, and create > > objects of the class that is named the same as the array. > > > This is supposed to populate a database where tables are named after > > arrays, and each table contains 1 column called "item_name" with items > > from the corresponding array. > > > allow me to illustrate: > > > ### > > > some_item = ['foo', 'bar'] > > other_item = ['alpha', 'bravo', 'foxtrot', 'zebra'] > > > ['some_item', 'other_item'].each do |this_array| > > array_length = 0 > > this_object = this_array.to_s.capitalize #<== here's the problem > > until array_length == this_array.length > > this_object.new(:item_name => this_array[array_length]) > > array_length += 1 > > end > > end > > > ### > > > the problem is, this_object becomes a string with the value of > > |this_array|. How do I explain to the program that its value is not just > > a string, but actually a name of the class, an instance of which i'm > > trying to initialize? > > > Forgive the dumb question, but i'm just starting out. I've been banging > > my head against this for hours.... any help would be appreciated... > > > thanks! > > -- > > Posted viahttp://www.ruby-forum.com/. > > Something like this will work. > > class Foo; end > class Bar; end > arr = ['foo','bar','bad'] > out = arr.collect {|a| Object.const_get(a.capitalize) rescue nil } > out.compact! > > Seehttp://www.ruby-doc.org/core/classes/Array.html > > Look for collect and compact! to see what I'm doing there. Sorry, forgot to instantiate the objects. Should have been. class Foo; end class Bar; end arr = ['foo','bar','bad'] out = arr.collect {|a| Object.const_get(a.capitalize).new rescue nil } out.compact!