web-dev-qa-db-fra.com

Comment traduire le nom de la classe de modèle ActiveRecord?

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.

42
Lukáš Voda

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
85
Jo P

Découvrez constantize et classify

0

Rails 5:

vous pouvez utiliser category.class.name

0
Mayur Patel