インスタンスを持っているときにActiveRecordモデルクラスの翻訳された名前を取得する最も簡単な方法は何ですか?
たとえば、次のようなモデルクラスがあります。
class Category < ActiveRecord::Base
...
end
クラスのインスタンスがあります:
category = Category.first
そして、私はYAMLファイルを持っていますconfig/locales/cs.yml
:
cs:
activerecord:
models:
category: Kategorie
そして、どのモデルクラスのインスタンスを扱っているかを以前に知らなかった場合でも、これを動的に行う必要があります。したがって、「activerecord.models.category」を明示的に指定したくありません。
これを行う簡単な方法はありますか?私はこのようなことができることを知っています
"activerecord.models.#{category.class.name.underscore}"
しかし、これを行うにはより良い方法が必要です。
見る:
http://api.rubyonrails.org/classes/ActiveModel/Naming.htmlhttp://guides.rubyonrails.org/i18n.html#translations-for-active-record-モデル
したがって、たとえば、ARクラスでは次を使用します。
Person.model_name.human
またはARインスタンスから:
person.class.model_name.human
constantize および classify を確認してください。
Rails 5:
category.class.name
を使用できます