金钱轨道 - 金额和货币的顺序

时间:2016-01-27 12:03:26

标签: ruby-on-rails ruby currency

初始化对象时,money-rails gem是否需要pricecurrency的特定顺序?例如,看看以下内容:

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

如果我们先指定price,我们会得到价格不正确的值(2500):

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

Object包含以下内容:monetize :price_cents

1 个答案:

答案 0 :(得分:1)

看来这个订单对某些货币很重要(包括日元,因为它没有美分)。这可能不是最好的解决方案,但如果有人被卡住,这就是我所做的。

我在self.monetize中的money-rails方法中添加了以下内容,以覆盖使用它的类的初始化方法:

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

这样它将首先发送货币。