获取直接类的类名,而不是完整的类名。红宝石

use*_*677 3 ruby ruby-on-rails-5.2

module A
  module B
    class C < A::Base

    def some_method

    end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

当我使用引用类名时,如何获得类名“ C” .name,我得到了A :: B :: C

Aru*_*hit 5

在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)>
Run Code Online (Sandbox Code Playgroud)

查看有关的文档 #demodulize

从字符串的常量表达式中删除模块部分。