Come possiamo istanziare classe da suo nome stringa in Ruby-on-Rails?Come istanziare la classe dalla stringa del nome in Rails?
Ad esempio, abbiamo il nome nel database in formato "ClassName" o "my_super_class_name".
Come possiamo creare l'oggetto da esso?
Soluzione:
cercavo io stesso, ma non trovato, ecco che è. Ruby-on-Rails API Method
name = "ClassName"
instance = name.constantize.new
Si può anche non formattato, non possiamo metodo stringa user .classify
name = "my_super_class"
instance = name.classify.constantize.new
Naturalmente forse questo è molto 'Rails modo', ma si risolve il suo scopo.
Cordiali saluti, constantize è un metodo comodo ActiveSupport che fa 'Object.const_get' e adesso è un metodo ActiveSupport che cerca di trasformare una stringa in una formattazione classe standard. Quello che state facendo è identica alla risposta di Evginey, con alcuni controlli supplementari. Mentre la costante è probabilmente una soluzione migliore (perché esegue controlli di integrità), aiuta a capire gli strumenti che usi. – quandrum
Grazie per questo, ad essere onesti non ha controllato cosa fa in manuale. –