wake-up-neo.com

Wie kann ich den Namen der ActiveRecord-Modellklasse übersetzen?

Was ist der einfachste Weg, um den Namen der ActiveRecord-Modellklasse zu übersetzen, wenn ich eine Instanz davon habe?

Zum Beispiel - Ich habe eine Modellklasse wie folgt:

class Category < ActiveRecord::Base
  ...
end

Ich habe eine Instanz der Klasse:

category = Category.first

Und ich habe YAML-Datei config/locales/cs.yml:

cs:
  activerecord:
    models:
      category: Kategorie

Und ich muss dies dynamisch tun, auch wenn ich vorher nicht weiß, mit welcher Instanz der Modellklasse ich mich beschäftigen werde. Deshalb möchte ich "activerecord.models.category" nicht explizit angeben.

Gibt es einen einfachen Weg, dies zu tun? Ich weiß, dass ich so etwas tun kann

"activerecord.models.#{category.class.name.underscore}"

Dafür muss es jedoch einen besseren Weg geben.

42
Lukáš Voda

Sehen:

http://api.rubyonrails.org/classes/ActiveModel/Naming.htmlhttp://guides.rubyonrails.org/i18n.html#translations-for-active-record-models

Verwenden Sie zum Beispiel für eine AR-Klasse Folgendes:

Person.model_name.human

oder aus einer AR-Instanz:

person.class.model_name.human
85
Jo P

Check out constantize und classify

Schienen 5:

sie können category.class.name verwenden

0
Mayur Patel