Как получить имя класса из объекта ActiveRecord?
У меня есть:
result = User.find(1)
Я пробовал:
result.class
# => User(id: integer, name: string ...)
result.to_s
# => #<User:0x3d07cdc>"
Мне нужно только имя класса в строке (User
в этом случае). Есть ли способ для этого?
Я знаю, что это довольно просто, но я искал как Rails, так и Ruby docs, и я не смог его найти.
Вы хотите вызвать . name в классе объектов:
result.class.name
result.class.name.split('::').last
Вот правильный ответ, извлеченный из комментариев Даниэля Риковски и псевдомана. Я устал от необходимости сорвать комментарии, чтобы найти правильный ответ...
Если вы используете Rails (ActiveSupport):
result.class.name.demodulize
Если вы используете POR (plain-ol-Ruby):
result.class.name.split('::').last
Работают как result.class.to_s
, так и result.class.name
.
Object#class.inspect
дает то же самое, чтоObject#class.name
, тогда как с объектами ActiveRecord это не так.