Как мне получить имя класса Ruby?
как я могу получить имя класса из объекта ActiveRecord?
Я:
result = User.find(1)
пробовал:
result.class
# => User(id: integer, name: string ...)
result.to_s
# => #<User:0x3d07cdc>"
мне нужно только имя класса в виде строки (User в данном случае). Есть ли способ для этого?
Я знаю, что это довольно просто, но я искал документы Rails и Ruby, и я не мог его найти.
5 ответов:
вы хотите вызвать . name на класс объекта:
result.class.name
вот правильный ответ, извлеченный из комментариев Даниэля Риковского и pseidemann. Я устал от того, чтобы прополоть через комментарии, чтобы найти правильный ответ...
Если вы используете Rails (ActiveSupport):
result.class.name.demodulizeЕсли вы используете POR (plain-ol-Ruby):
result.class.name.split('::').last
если вы хотите получить имя класса внутри метода класса,
class.nameилиself.class.nameне будет работать. Они будут просто выводитьClass, так как класс классаClass. Вместо этого вы можете просто использоватьname:module Foo class Bar def self.say_name puts "I'm a #{name}!" end end end Foo::Bar.say_nameвыход:
I'm a Foo::Bar!
в моем случае, когда я использую что-то вроде
result.class.nameЯ получил что-то вродеModule1::class_name. Но если мы только хотимclass_nameиспользуйте
result.table_name.singularize
Comments