默认情况下,金钱以美分为单位保存价值并创建像 price_cents:integer 这样的迁移。我需要以 minidollars(货币的 1/1000)保存和计算价值。
我自己不注册货币。我使用 gem google_currency 获取当前货币汇率。
如何为所有货币值设置精度 1/1000?
* rails (4.2.1)
* money (6.5.1)
* money-rails (1.4.1)
* google_currency (3.2.0)
默认情况下,金钱以美分为单位保存价值并创建像 price_cents:integer 这样的迁移。我需要以 minidollars(货币的 1/1000)保存和计算价值。
我自己不注册货币。我使用 gem google_currency 获取当前货币汇率。
如何为所有货币值设置精度 1/1000?
* rails (4.2.1)
* money (6.5.1)
* money-rails (1.4.1)
* google_currency (3.2.0)
根据文档,您可以注册自己的子单元:
curr = {
:priority => 1,
:iso_code => "USD",
:iso_numeric => "840",
:name => "United States Dollar",
:symbol => "$",
:subunit => "Minidollar",
:subunit_to_unit => 1000,
:separator => ".",
:delimiter => ","
}
Money::Currency.register(curr)
Google Currency 只是 extends Money::Bank::VariableExchange
,所以现在你要创建一个 1 美元的项目并获得欧元的价值:
money = Money.new(10_00, "USD") # this is in "minidollars"
money.exchange_to(:EUR)