2014-05-13 9 views
8

Ich habe so etwas wie dies:Konvertieren String in Klassennamen ohne Verwendung von eval in Ruby?

string = "Post" 

Ich mag würde wörtliche die Zeichenfolge in einen Klassennamen konvertieren. Ich benutze eval wie folgt, um die Zeichenkette zu konvertieren:

eval(string) #=> Post 

Als JavaScript-Entwickler versuche ich eval zu vermeiden. Gibt es einen besseren Weg, dies in Ruby zu tun? Oder benutzt eval die bevorzugte Vorgehensweise?

+3

bist du auf schlichtem Rubin unterwegs? – xlembouras

+1

Plain Rubin. Ich bin mir bewusst, dass Ruby on Rails hat eine Methode für diese http://stackoverflow.com/questions/3464007/ruby-convert-class-name-in-string-to-actual-class – Stratus3D

Antwort

21

können Sie versuchen,

class Post 
end 

Object.const_get("Post") 

, die die Post Klasse gibt

18

Verwenden Module.const_get

string = "Fixnum" 
clazz = Object.const_get(string) 
clazz.name # => "Fixnum" 

Wenn Sie in einem Schienen Kontext sind, können Sie auch die `#constantize Methode auf Zeichenkette

clazz = string.constantize # => Fixnum 
+0

constantize ist am besten als andere – vajapravin

Verwandte Themen