W jaki sposób możemy utworzyć instancję klasy z łańcucha nazw w Ruby-on-Rails?Jak utworzyć instancję klasy z ciągu znaków w Railsach?
Na przykład mamy jego nazwę w bazie danych w formacie "ClassName" lub "my_super_class_name".
Jak możemy z tego obiektu stworzyć obiekt?
Rozwiązanie:
Szukałem to sam, ale nie znaleziono, więc tutaj jest. Ruby-on-Rails API Method
name = "ClassName"
instance = name.constantize.new
To nie może być nawet sformatowane, nie możemy metoda ciąg użytkownik .classify
name = "my_super_class"
instance = name.classify.constantize.new
Oczywiście może to jest bardzo „sposób Rails”, ale to rozwiązuje to cel.
Po prostu FYI, constantize to wygodna metoda ActiveSupport, która wykonuje polecenie "Object.const_get", a Classify to metoda ActiveSupport, która próbuje przekształcić ciąg znaków w standardowe formatowanie klas. To, co robisz, jest identyczne z odpowiedzią Evginey'a, z dodatkowymi kontrolami. Podczas gdy stała jest prawdopodobnie lepszym rozwiązaniem (ponieważ sprawdza stan zdrowia), pomaga zrozumieć narzędzia, z których korzystasz. – quandrum
Dziękuję za to, szczerze mówiąc nie sprawdziłem, co robi w instrukcji obsługi. –