From: Jamey Cribbs Date: 2007-12-13T07:02:12+09:00 Subject: Re: Turning symbols into class names ------=_Part_38105_11845830.1197496916306 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Oops, that needs to be: :foo.to_s.capitalize.constantize -> Foo On Dec 12, 2007 4:58 PM, Jamey Cribbs wrote: > Rails has something even easier: > > :foo.to_s.constantize -> Foo > > > > > On Dec 12, 2007 4:39 PM, Samantha wrote: > > > > > > > On Dec 12, 4:26 pm, Sebastian Hungerecker < sep...@googlemail.com> > > wrote: > > > Samantha wrote: > > > > Now, I need to do the same thing for those symbols... however, I > > need > > > > to somehow get Ruby to recognize those symbols as Classes. > > > > > > Nitpick: You need ruby to give you the class with a certain name. You > > don't > > > need ruby to "recognize" the symbols as something they're not. > > > > Semantics, semantics, semantics. :) > > > > > > So, let's say in my array, I have a symbol by the name of :foos, > > that / > > > > should/ correspond with the Foo class. > > > > > > > So... > > > > > > > array looks like: [:foos, :bars] > > > > > > > I need to be able to do something along the lines of: > > > > > > > array[0].to_s.capitalize.singularize.my_method_to_grab_associations > > > > > > > Well, obviously that will give me Foo, but it thinks Foo is a > > string. > > > > > > You make it sound as if ruby was wrong in thinking so. "Foo" *is* a > > string. > > > > Oh, I know that "Foo" is a string. I just needed a way to turn that > > string into something else. :) Of course if anyone is wrong, it's me, > > and not Ruby - I've just been working on something for a long amount > > of time which has my 'grr' factor raised a lil bit. :) > > > > > > Which leads me to my question - > > > > How do I get my method to give me back what I'm looking for on Foo, > > > > rather than complaining that Foo is a string? > > > > > > By passing the string to const_get, which will return the value of the > > > constant with the name "Foo" and then calling your methods on that > > value > > > (which will be the class object if Foo is a class). > > > [:foos, :bars].map {|name| Object.const_get( > > name.to_s.capitalize.singularize)} > > > should return [Foo, Bar], Foo and Bar being class objects. > > > > Thank you, Sebastian! That did *exactly* what I needed, which is why > > after banging my head incessantly on this for a while now, I decided > > to come here - where those who know much, much more than I, reside. > > > > -Samantha > > > > > HTH, > > > Sebastian > > > -- > > > NP: In Flames - Dead Eternity > > > Jabber: sep...@jabber.org > > > ICQ: 205544826 > > > > > > > ------=_Part_38105_11845830.1197496916306--