Как я могу перевести имя класса модели ActiveRecord?
Каков самый простой способ получить переведенное имя класса модели 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}"
Но должен быть лучший способ сделать это.
Ответы
Ответ 1
См:
http://api.rubyonrails.org/classes/ActiveModel/Naming.html
http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models
Итак, например, в AR-классе используйте:
Person.model_name.human
или из экземпляра AR:
person.class.model_name.human
Ответ 2
Отъезд constantize и classify,