Wie können wir eine Klasse aus ihrer Namenszeichenfolge in Ruby-on-Rails instanziieren?
Zum Beispiel haben wir den Namen in der Datenbank in einem Format wie "ClassName" oder "my_super_class_name".
Wie können wir daraus ein Objekt erstellen?
Lösung:
Habe selbst danach gesucht, aber nicht gefunden, also hier ist es. Ruby-on-Rails-API-Methode
name = "ClassName"
instance = name.constantize.new
Es kann sogar nicht formatiert werden, wir können die Zeichenfolgenmethode .classify verwenden
name = "my_super_class"
instance = name.classify.constantize.new
Natürlich ist dies vielleicht nicht sehr "Rails Way", aber es löst seinen Zweck.
Object.const_get
und Classify ist eine ActiveSupport-Methode, die versucht, eine Zeichenfolge in eine Standardklassenformatierung umzuwandeln. Was Sie tun, ist identisch mit Evgineys Antwort, mit einigen zusätzlichen Überprüfungen. Während das Konstantisieren wahrscheinlich eine bessere Lösung ist (weil es Sanity Checks durchführt), hilft es, die von Ihnen verwendeten Tools zu verstehen.