rails query left includes active ruby-on-rails ruby rails-activerecord

ruby-on-rails - query - rails find



¿Cómo obtengo el nombre de una clase de Ruby? (5)

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 utiliza Rails (ActiveSupport):

result.class.name.demodulize

Si usas POR (plain-ol-Ruby):

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

¿Cómo puedo obtener el nombre de 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 ( User en este caso). ¿Hay un método para eso?

Sé que esto es bastante básico, pero busqué los documentos de Rails y de Ruby, y no pude encontrarlos.


En mi caso, cuando uso algo como result.class.name obtuve algo como Module1::class_name . Pero si solo queremos class_name , usa

result.table_name.singularize


Quieres llamar a .name en la clase del objeto:

result.class.name


Si desea obtener un nombre de clase dentro de un método de clase, class.name o self.class.name no funcionarán. Estos solo generarán Class , ya que la clase de una clase es Class . En su lugar, puedes usar el name :

module Foo class Bar def self.say_name puts "I''m a #{name}!" end end end Foo::Bar.say_name

salida:

I''m a Foo::Bar!


Tanto result.class.to_s como result.class.name funcionan.