328 votos

¿Cómo puedo obtener el nombre de una clase Ruby?

¿Cómo puedo obtener el nombre de la clase de un objeto ActiveRecord?

Tengo:

 result = User.find(1)
 

Lo intenté:

 result.class
# => User(id: integer, name: string ...)
result.to_s
# => #<User:0x3d07cdc>"
 

Necesito sólo el nombre de la clase, en una cadena ( User en este caso). ¿Existe un método para que?

Sé que esto es bastante básico, pero he buscado tanto Rails 'y docs de Ruby, y no pude encontrarla.

626voto

flicken Puntos 5887

¿Quieres llamar .name en la clase del objeto:

 result.class.name
 

91voto

Darren Hicks Puntos 1021

Aquí está la respuesta correcta, extraído de los comentarios de Daniel Rikowski y pseidemann. Estoy cansado de tener que eliminar a través de comentarios para encontrar la respuesta correcta ...

Si utiliza Rails (ActiveSupport):

 result.class.name.demodulize
 

Si utiliza POR (plain-ol-Rubí):

 result.class.name.split('::').last
 

31voto

tal Puntos 2231

Tanto result.class.to_s y result.class.name de trabajo.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X