我如何得到Ruby類的名稱?

如何從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


#1樓

這是正確答案,摘自Daniel Rikowski和pseidemann的評論。 我厭倦了經過評論來尋找合適的答案...... 對象

若是您使用Rails(ActiveSupport): 文檔

result.class.name.demodulize

若是你使用POR(普通紅寶石): 字符串

result.class.name.split('::').last

#2樓

在個人狀況下,當我使用相似result.class.name東西時,我獲得了相似Module1::class_name東西。 可是若是咱們只想要class_name ,請使用 get

result.class.table_name.singularize string


#3樓

若是要從類方法中獲取類名,則class.nameself.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!

#4樓

您能夠使用class方法獲取ruby中任何對象的類。

例如

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

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

     string = 'This is String'
     => "This is String"
     string.class
     => String

#5樓

你想在對象的類上調用.name

result.class.name
相關文章
相關標籤/搜索