Great, so with everyone's help this is what I ended up doing in the end: foo = [1foo, 2foo, 3foo] bar = [abar, bbar] ['foo', 'bar'].each do |this_array| length = 0 this_obj = this_array.to_s.capitalize.constantize until length == eval(this_array).length this_obj.create(:word => eval(this_array)[length]) length += 1 end the trick was to use the .constantize method to turn 'foo' and 'bar' into classes Foo and Bar, and then to use eval() to use the array's names instead of its contents. I came across .constantize after searching for const_get as phrogz suggested. 7stud, my classes are defined in their corresponding controllers - this is a part of a Rails exercise dusty, your method using collect and compact looks interesting, I'll play with it too. Thanks everyone for help. I haven't been excited about programming for the last 15 years, but Ruby is changing that rapidly :) -- Posted via http://www.ruby-forum.com/.