Quel est le moyen le plus simple d'obtenir le nom traduit de la classe de modèle ActiveRecord lorsque j'en ai une instance?
Par exemple, j'ai une classe de modèle comme celle-ci:
class Category < ActiveRecord::Base
...
end
J'ai une instance de la classe:
category = Category.first
Et j'ai le fichier YAML config/locales/cs.yml
:
cs:
activerecord:
models:
category: Kategorie
Et je dois le faire de manière dynamique, même si je ne savais pas auparavant avec quelle instance de classe de modèle j'aurais affaire. Je ne souhaite donc pas spécifier explicitement "activerecord.models.category".
Y a-t-il un moyen facile de faire ceci? Je sais que je peux faire quelque chose comme ça
"activerecord.models.#{category.class.name.underscore}"
Mais il doit y avoir un meilleur moyen de le faire.
Voir:
http://api.rubyonrails.org/classes/ActiveModel/Naming.htmlhttp://guides.rubyonrails.org/i18n.html#translations-for-active-record-models
Ainsi, par exemple, sur une utilisation de classe AR:
Person.model_name.human
ou à partir d'une instance AR:
person.class.model_name.human
Découvrez constantize et classify .
Rails 5:
vous pouvez utiliser category.class.name