Как я могу получить название класса Ruby?

Я бы не рекомендовал его для производственного кода, но он имеет смысл и, похоже, работает:

SELECT REGEXP_REPLACE(COLUMN,'[^' || CHR(1) || '-' || CHR(127) || '],'')
370
задан Simone Carletti 21 November 2014 в 22:26
поделиться

6 ответов

Вы хотите вызвать .name для класса объекта:

result.class.name
685
ответ дан flicken 21 November 2014 в 22:26
поделиться

Оба result.class.to_s и result.class.name работают.

33
ответ дан the Tin Man 21 November 2014 в 22:26
поделиться

В моем случае, когда я использую что-то вроде result.class.name, я получил что-то вроде Module1::class_name. Но если мы хотим только class_name, используйте

result.class.table_name.singularize

1
ответ дан Jignesh Gohel 21 November 2014 в 22:26
поделиться

Вот правильный ответ, извлеченный из комментариев Даниэля Риковского и Псейдемана. Я устала от того, что надо проползать через комментарии, чтобы найти правильный ответ ...

Если вы используете Rails (ActiveSupport):

result.class.name.demodulize

Если вы используете POR (plain-ol-Ruby):

result.class.name.split('::').last
108
ответ дан Darren Hicks 21 November 2014 в 22:26
поделиться

Если вы хотите получить имя класса из метода класса, 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!
6
ответ дан jayhendren 21 November 2014 в 22:26
поделиться

Можно использовать class метод для получения класса любого объекта в рубине.

, например,

     array= [] 
     => []
     array.class
     => Array

     hash = {}
     => {}
     hash.class
     => Hash

     string = 'This is String'
     => "This is String"
     string.class
     => String 
2
ответ дан MR. A 29 August 2019 в 19:43
поделиться
  • 1
    @Steerpike: Очевидно, Беседка должна наследоваться ReallyScaryThingThatWakesUpAndEatsYou. – kyoryu 6 August 2009 в 06:57
Другие вопросы по тегам:

Похожие вопросы: