9

Ruby 1.9.3 と Rails 3.0.9 でアプリケーションを構築しています

以下のようなクラスがあります。

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

「CDADocument」のようなクラス名が欲しいです。

私の humanize_class_name メソッドはこれを達成する正しい方法ですか?

また

Rails で利用できる他の組み込みメソッドはありますか?

4

2 に答える 2

30

使用してi18nいる場合は、呼び出しModel.model_name.humanてローカライズされたモデル名を取得できます。

例:Event.model_name.humanローカライズされた名前を返します。

ドキュメント: http://api.rubyonrails.org/classes/ActiveModel/Name.html#method-i-human

于 2012-12-11T15:42:46.747 に答える
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
于 2012-09-10T11:07:05.990 に答える