我怎樣才能得到一個ActiveRecord對象的類名?我如何獲得Ruby類的名稱?
我:
result = User.find(1)
我想:
result.class
# => User(id: integer, name: string ...)
result.to_s
# => #<User:0x3d07cdc>"
我只需要類的名字,一個字符串(User
在這種情況下)。有沒有一種方法呢?
我知道這是非常基本的,但我找遍兩個軌和Ruby的文檔,我找不到它。
我怎樣才能得到一個ActiveRecord對象的類名?我如何獲得Ruby類的名稱?
我:
result = User.find(1)
我想:
result.class
# => User(id: integer, name: string ...)
result.to_s
# => #<User:0x3d07cdc>"
我只需要類的名字,一個字符串(User
在這種情況下)。有沒有一種方法呢?
我知道這是非常基本的,但我找遍兩個軌和Ruby的文檔,我找不到它。
你想打電話.name對對象的類:
result.class.name
當我做到這一點我之前得到的模塊名稱,因此「模塊::子模塊::班」,有沒有想起來了「類」 – 2011-09-02 11:35:02
@Abe的方式:`result.class.name.split(':: 「).last` – 2011-10-01 10:40:30
兩個result.class.to_s
和result.class.name
工作。
這裏的正確答案,由丹尼爾Rikowski和pseidemann評論提取。我厭倦了通過評論剔除找到正確的答案...
如果您使用的Rails(的ActiveSupport):
result.class.name.demodulize
如果使用POR(純醇 - 紅寶石):
result.class.name.split('::').last
在我的情況下,當我使用類似result.class.name
的東西時,我得到了類似Module1::class_name
的東西。但是,如果我們只希望class_name
,使用
result.table_name.singularize
@Oliver n:正常的Ruby對象,`對象#class.inspect`給出了同樣的`對象#class.name`,而這是不ActiveRecord對象的情況。 – 2011-08-09 23:53:06