Frage

Wie soll ich arbeiten mit Geld mit MongoID? Soll ich so konfiguriert, dass als BigDecimal? Und auf Schienen Ebene? Für Active haben wir etwas namens Geld, aber AFAIK es unterstützt nur AR

War es hilfreich?

Lösung

MongoDB speichert Zahlen in verschiedenen BSON Datentypen (int, long int, double). Ich empfehle Ihnen, speichern Geld als Cent (wenn US-Währung) und die long int-Datentyp verwenden.

Andere Tipps

Ich lief auch in diesen. Leider BigDecimal Filialen in MongoDB als String, so dass es nicht Sie lassen summieren, sortieren, usw. auf sie wie ein Schwimmer oder int.

Integer scheint der Weg zu sein, den Wert in Cent gehen speichern, möglicherweise das Geld Juwel mit abstrahieren es ein wenig: https://github.com/RubyMoney/money

Mongo speichert die int mit 64 Bits auf modernsten Maschinen denke ich, so gibt es nicht viel Risiko für eine größere Menge auch in Cent benötigen. Es sieht aus wie Sie zwischen -9.223.372.036.854.775.808 und 9.223.372.036.854.775.807 Cent speichern können, also zwei Dezimalstellen ausziehen zu Ihrem min / max-Wert in Dollar.

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

Wenn Sie das Geld Juwel Sie es als Geldtyp speichern kann.

Ein Beispiel: https://gist.github.com/michaelkoper/5007636

Es speichert das Geld als Array [cents, Währung]

class Product
   include Mongoid::Document

  field :price,    type: Money
end

product = Product.new(:price => Money.new(1000, 'EUR'))
product.price.format
# => "€10.00"

Ich empfehle Ihnen, Geld-Schienen als Alternative zu versuchen. https://github.com/RubyMoney/money-rails Es ist ziemlich gut gepflegt und arbeitet mit mongoid auch!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top