2011-04-27 44 views
1

我有一個模型發票屬性payment_status。 payment_status的固定值不支付| partial_payed | payed我想要在語言環境文件中存儲翻譯。 我thougt這將是件好事,它在模型中的本地文件哪裏存儲模型屬性值翻譯

de: 
    activerecord: 
    attributes: 
     payment_status: Zahlstatus 
     payment_status_values: 
     unpayed: offen 
     partial_payed: teilgezahlt 
     payed: ausgeglichen 

現在我可以得到翻譯PAYMENT_STATUS價值像這樣

I18n.t Invoice.last.payment_status , :scope => "activerecord.attributes.invoice.payment_status_values" 
=> "offen" 

對我來說,它看起來像過去的發票輸入sopes很多,有可能是一個範圍的方法來獲得翻譯或更好的方式來做到這一點?

回答

0

我們使用了marcel的easy_enums插件。我發現最近的是:https://github.com/mschuerig/easy_enums/

語法是這樣的。然後,您只存儲範圍標識符的最後一部分。

has_enum :shipping_mode, :default => :not_set, :fallback => :not_set do 
    value :not_set 
    value :address 
    value :self_collect 
    define_method(:localize) { I18n.t("models.payment.shipping_mode.#{self.id}") } 
    end 

這是否會達到您的目標?

+0

你確定它不是https://github.com/openteam/has_enum - easyenum沒有has_enum方法嗎? – toy 2011-04-28 08:56:10

+0

我找到了一個http://rubygems.org/gems/easy_enum,但捆綁並添加到我的發票類後,我得到一個NameError:未初始化的常量EasyEnum :: ClassMethods :: Enum – toy 2011-04-28 09:17:59

+0

確定安裝爲插件它工作! – toy 2011-04-28 09:30:51