2012-09-10 67 views
7

我正在用Ruby 1.9.3和Rails 3.0.9構建應用程序如何在Ruby on Rails中獲得人類可讀的類名?

我有一個像下面這樣的類。

module CDA 
    class Document 
    def humanize_class_name 
     self.class.name.gsub("::","") 
    end 
    end 
end 

我想要類名如「CDADocument」。

我的humanize_class_name方法是否是實現此目的的正確方法?

OR

任何其他建於使用Rails可用的方法?

回答

1

我覺得Rails可能有類似的東西,但既然你想要的形式是奇特的,你將不得不自己設計方法。你定義它的位置是錯誤的。你必須爲每個班級做到這一點。相反,你應該在Class類中定義它。

class Class 
    def humanize_class_name 
     name.delete(":") 
    end 
end 
some_instance.class.humanize_class_name #=> the string you want 

class Object 
    def humanize_class_name 
     self.class.name.delete(":") 
    end 
end 
some_instance.humanize_class_name #=> the string you want 
+0

僅供參考,'tr'約3.5倍更快這裏比'gsub'。 –

+0

@AndrewMarshall我知道'tr'的速度更快,但我不知道你可以把空串作爲替換。謝謝。 – sawa

+1

'delete(「:」)'? – Stefan

相關問題