如何从ActiveRecord对象获取类名? ruby
我有: ide
result = User.find(1)
我试过了: spa
result.class # => User(id: integer, name: string ...) result.to_s # => #<User:0x3d07cdc>"
我只须要字符串中的类名(在本例中为User
)。 有没有办法呢? 3d
我知道这是很是基本的,但我搜索了Rails和Ruby的文档,我找不到它。 code
这是正确答案,摘自Daniel Rikowski和pseidemann的评论。 我厌倦了经过评论来寻找合适的答案...... 对象
若是您使用Rails(ActiveSupport): 文档
result.class.name.demodulize
若是你使用POR(普通红宝石): 字符串
result.class.name.split('::').last
在个人状况下,当我使用相似result.class.name
东西时,我获得了相似Module1::class_name
东西。 可是若是咱们只想要class_name
,请使用 get
result.class.table_name.singularize
string
若是要从类方法中获取类名,则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!
您能够使用class
方法获取ruby中任何对象的类。
例如
array= [] => [] array.class => Array hash = {} => {} hash.class => Hash string = 'This is String' => "This is String" string.class => String
你想在对象的类上调用.name :
result.class.name