5

MongoIDでMoneyを使用するにはどうすればよいですか? BigDecimal として構成する必要がありますか? そしてレールレベルで?ActiveRecordにはMoneyというものがありますが、知る限りARをサポートしているだけです

4

4 に答える 4

8

私もこれに出くわしました。残念ながら、BigDecimalはMongodbに文字列として格納されるため、floatやintのように合計や並べ替えなどを行うことはできません。

整数は、値をセントで格納する方法のようです。おそらく、Money gemを使用して値を少し抽象化します:https ://github.com/RubyMoney/money

Mongoは、ほとんどの最新のマシンで64ビットを使用してintを格納するため、セント単位でも大量に必要になるリスクはあまりないと思います。-9,223,372,036,854,775,808〜9,223,372,036,854,775,807セントを格納できるようです。したがって、小数点以下2桁を削除して、ドルでの最小/最大値を取得します。

http://en.wikipedia.org/wiki/Integer_(computer_science)

于 2012-02-21T00:20:09.717 に答える
3

MongoDB は、数値をさまざまなBSONデータ型 (int、long int、double) で格納します。お金をセント (米国通貨の場合) として保存し、long int データ型を使用することをお勧めします。

于 2010-09-28T20:25:18.627 に答える
2

マネージェムが気に入った場合は、マネータイプとして保管できます。

例: https://gist.github.com/michaelkoper/5007636

お金を配列 [cents, currency] として格納します。

class Product
   include Mongoid::Document

  field :price,    type: Money
end

product = Product.new(:price => Money.new(1000, 'EUR'))
product.price.format
# => "€10.00"
于 2013-02-21T20:00:54.603 に答える
0

代わりにマネーレールを試すことをお勧めします。https://github.com/RubyMoney/money-railsかなりよく整備されており、mongoid でも動作します!

于 2012-12-25T11:27:39.990 に答える