获取 class 直接 class 的名称,而不是完整的 class 名称。 ruby

get class name of the immediate class, not full class name. ruby

module A
  module B
    class C < A::Base

    def some_method

    end
    end
  end
end

如何获得 class 名称 "C",因为当我引用 class 名称时,.name,我得到 A::B::C

在 Rails 中,您可以这样做:A::B::C.name.demodulize

示例:

Loading development environment (Rails 4.2.7.1)
[1] pry(main)> module A
[1] pry(main)*   class Base;end
[1] pry(main)*   module B
[1] pry(main)*     class C < A::Base
[1] pry(main)*
[1] pry(main)*       def some_method
[1] pry(main)*
[1] pry(main)*       end
[1] pry(main)*     end
[1] pry(main)*   end
[1] pry(main)* end
=> :some_method
[2] pry(main)> A::B::C.name.demodulize
=> "C"
[3] pry(main)>

查看#demodulize

的文档

Removes the module part from the constant expression in the string.