2016-01-27 68 views
1

初始化對象時,money-rails寶石是否需要特定順序pricecurrency?例如,看看下面的例子:如果我們指定price第一Money Rails - 金額和貨幣的順序

Object.new(currency: 'JPY', price: 25) 
=> #<Object id: nil, price_cents: 25, currency: "JPY"> 

,我們的價格得到一個不正確的值(2500):

Object.new(price: 25, currency: 'JPY') 
=> #<Object id: nil, price_cents: 2500, currency: "JPY"> 

Object包含以下內容:monetize :price_cents

+0

在上面的代碼中,沒有一行涉及'RubyMoney' gem。 'Object#new'不會被'RubyMoney' afaik覆蓋。 – mudasobwa

+0

你必須假設我們正在使用寶石。我編輯問題以顯示'對象'是貨幣化'price_cents'。 –

+0

我不必假設任何東西。你在談論'money-rails'寶石,它透明地利用了'貨幣化'寶石;你在這個問題中從來沒有提到過他們。 'RubyMoney'本身沒有'貨幣化'方法。 – mudasobwa

回答

0

它看起來像某些貨幣的訂單(包括日元,因爲它沒有美分)。這可能不是最好的解決方案,但如果有人卡住了,這就是我所做的。

添加以下到self.monetize方法money-rails重寫爲使用它的類初始化方法:

define_method "initialize" do |opts = {}| 
    opts = opts.deep_symbolize_keys 
    opts = {currency: opts[:currency]}.merge(opts) 
    super(opts) 
end 

這樣,它會先發貨幣。