2013-03-28 56 views
1

我有一個用戶模型,它具有在模塊中定義的角色。總之,模型中常量的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 

和翻譯:管理員

但它看起來並不像一個good解決方案。

什麼是best這樣做?

回答

1

兩個月後再來! :D

有一個gem可以解決我的問題。 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"