2012-09-10 15 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メソッドはこれを行う正しい方法ですか?

または

その他の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

関連する問題