I18n模型中的常量

时间:2013-03-28 18:06:47

标签: ruby-on-rails rails-i18n

我有一个用户模型,它具有在模块中定义的角色。简而言之,

class User < ActiveRecord::Base
  (...)
  module Roles
    Admin           = 0
    SuperPrefeitura = 1
    Prefeitura      = 2
    Instituicao     = 3
  end

  def is_admin?
    role == Roles::Admin
  end
  (...)  
end

尼斯。现在,我想使用i18n显示用户的角色。 解决方案是

def role_name
  case role
  when Roles::Admin
    :admin
  end
  (...)
end

并翻译:admin

但它看起来不像是good解决方案。

best这样做的方式是什么?

1 个答案:

答案 0 :(得分:1)

两个月后出发! :d

有一颗宝石可以解决我的问题。 enumerize

示例用法(来自github):

型号:

class User < ActiveRecord::Base
  extend Enumerize

  enumerize :sex, in: [:male, :female]

  enumerize :role, in: [:user, :admin], default: :user
end

语言环境:

en:
  enumerize:
    user:
      sex:
        male: "Male"
        female: "Female"