Dado un símbolo en los rieles, ¿cómo obtengo una clase? Así que podría llamar algo así como:rails: ¿Cómo convierto un símbolo en una clase
give_class(:post).find(:all)
o similar.
Dado un símbolo en los rieles, ¿cómo obtengo una clase? Así que podría llamar algo así como:rails: ¿Cómo convierto un símbolo en una clase
give_class(:post).find(:all)
o similar.
Primero, conviértanse a la cadena.
class_name = symbol.to_s
A partir de ahí, tendrá que dar formato a la cadena en un nombre de la clase adecuada utilizando los métodos proporcionados por ActiveSupport's Inflector.
camelize
se convertirán en 'my_module'
'MyModule'
classify
a su vez, 'my_models'
en 'MyModel'
camelize
es más probable el que desee, teniendo en cuenta su fragmento de código.
continuación, utilizar el método de constantize
:
klass = class_name.constantize
con clase!
que estaba buscando stackoverflow para esta respuesta y no pude encontrar redactado como yo estaba buscando, así que pensé que lo haría Q & A mí mismo:
La respuesta anteriormente era correcta, pero me encontré; fuimos los documentos que explican un poco mejor:
Existen básicamente dos métodos:
A partir de ahí, llamas a constantize, ¡y Viola! tienes tu clase
Mhm. Depende de si va a pasar el nombre de clase real ': MyClass', o prefiere el formato': my_class'. – Matchu
Sí, eso es correcto. Esa fue la parte que me estaba molestando. Especialmente la diferencia entre singular y plural. – dpb
Parece que hay una versión actualizada de Rails 3 http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html – christophercotton