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