2016-03-13 7 views
0

я использую, чтобы иметь роли как Enum и перевести их было легко ...Localize/Перевести различные значения для одной модели поля

Я принятой rolify и теперь все получили более сложный ...

Rolify добавляет таблицу «Роли» в приложение RoR, где у вас есть, например, поле «имя» роли.

Так что у меня 4 роли:

  • SuperAdmin
  • Администратор
  • Учитель
  • Родитель

То, что я хотел бы сделать это, чтобы перевести эти четыре роли на разные языки , Я посмотрел на решениях, как драгоценный камень «глобализация», но это только кажется, чтобы перевести одно значение поля, так, например, я мог бы сказать, что:

  • Учителя (о)
  • профессора (пт)

Но я не могу понять, как перевести более одного значения для одного и того же поля.

Любая идея о том, как я могу это сделать?

EDIT Немного разъяснений. Роли хранятся в поле «имя», и поскольку у меня есть 4 роли, «имя» может иметь 4 разных значения (Superadmin, admin, teacher, parent). Моя проблема заключается в том, чтобы переводить разные значения для одного и того же поля.

+0

В чем проблема, вы можете установить свой язык, а затем сохранить значение соответствующим образом. – LHH

+0

См. Мой «Изменить». – lbramos

ответ

0

Согласно глобалистского жемчужину

Первый сохранить все English (EN) значения

I18n.locale = :en 
Role.create(name: 'superadmin') 
Role.create(name: 'admin') 
Role.create(name: 'teacher') 

и так далее ......

Позволяет переводить атрибуты за локали:

Role.find_each do |role| 
    I18n.locale = :pt ##set another locale 
    ##find role using id and save accordingly. 
    role.update_attributes(name: 'Professor') ## it will create role with translated name in roles_translation table. 
    and so on...... 

##set more locale and save values accordingly. 
end 

для получения дополнительной информации здесь https://github.com/globalize/globalize#model-translations

+0

Это будет работать, если у меня будет только значение «учитель». Но «имя» может быть «superadmin», «admin», «teacher» или «parent». Он может иметь эти 4 разных значения ... – lbramos

+0

обновил мой ответ – LHH

+0

На основании вашего ответа я смог перевести роли. Затем я получил новую проблему: все проверки (например, current_user.has_role?: Teacher) перестают работать, потому что приложение теперь ищет «профессор» вместо «учителя». Есть ли способ заставить «locale» в валидации rollify/cancancan? – lbramos