¿Cómo puedo obtener el nombre de la clase de un objeto ActiveRecord?
Yo tengo:
result = User.find(1)
Lo intenté:
result.class
# => User(id: integer, name: string ...)
result.to_s
# => #<User:0x3d07cdc>"
Solo necesito el nombre de la clase, en una cadena ( Useren este caso). ¿Hay algún método para eso?
Sé que esto es bastante básico, pero busqué en los documentos de Rails y Ruby, y no pude encontrarlo.

Object#class.inspectda lo mismo queObject#class.name, mientras que este no es el caso con los objetos ActiveRecord.Respuestas:
Desea llamar a .name en la clase del objeto:
fuente
result.class.name.split('::').lastresult.class.name.demodulizeUser.name.User.to_sTambién parece funcionar.Aquí está la respuesta correcta, extraída de los comentarios de Daniel Rikowski y pseidemann. Estoy cansado de tener que revisar los comentarios para encontrar la respuesta correcta ...
Si usa Rails (ActiveSupport):
Si usa POR (plain-ol-Ruby):
fuente
Ambos
result.class.to_syresult.class.nametrabajo.fuente
Si desea obtener un nombre de clase desde un método de clase,
class.nameoself.class.nameno funcionará. Estos solo saldránClass, ya que la clase de una clase esClass. En cambio, puedes usarname:salida:
fuente
En mi caso, cuando uso algo así
result.class.name, tengo algo asíModule1::class_name. Pero si solo queremosclass_name, useresult.class.table_name.singularizefuente