Jak mam pracować z Money z MongoID? Czy powinienem skonfigurować go jako BigDecimal? A na poziomie szyn? Dla ActiveRecord mamy coś o nazwie Money, ale AFAIK obsługuje tylko ARreprezentacja pieniędzy w mongoidzie
Odpowiedz
MongoDB przechowuje numery w różnych typach danych BSON (int, long int, double). Zalecam przechowywanie pieniędzy jako centów (jeśli jest to waluta amerykańska) i używanie typu long int typu.
Wpadłem też na to. Niestety sklepy BigDecimal w Mongodb jako ciąg, więc nie pozwoli ci sumować, sortować, itp. Na nim jak float lub int.
Integer wydaje się być droga przechowywania wartości w centach, ewentualnie stosując gem pieniądze na abstrakcyjnym to kawałek: https://github.com/RubyMoney/money
Mongo przechowuje int przy użyciu 64 bitów na najnowocześniejszych maszynach Chyba tak jest nie ma dużego ryzyka, że potrzebujemy większej kwoty nawet w centach. Wygląda na to, że możesz przechowywać między -2,223,372,036,854,775,808 i 9,223,372,036,854,775,807 centów, więc zdejmij dwie miejsca po przecinku, aby uzyskać wartość min/max w dolarach.
polecam spróbować pieniądze barierkami jako alternatywę. https://github.com/RubyMoney/money-rails Jest całkiem dobrze utrzymany i działa również z mongoidem!
Jeśli podoba ci się ten klejnot, możesz go przechowywać jako pieniądze.
Przykład: https://gist.github.com/michaelkoper/5007636
Przechowuje pieniądze jako tablica [centów, waluty]
class Product
include Mongoid::Document
field :price, type: Money
end
product = Product.new(:price => Money.new(1000, 'EUR'))
product.price.format
# => "€10.00"
- 1. Reprezentacja macierzy w schemacie
- 2. Reprezentacja drzewa w F #
- 3. Reprezentacja współrzędnych w GeoAlchemy2
- 4. Sprawdzanie poprawności moich pieniędzy
- 5. Format reprezentacja w bazie Web2py
- 6. Wewnętrzna reprezentacja ciągów w PHP
- 7. Zapisz dziedziczony obiekt do oddzielnej kolekcji w Mongoidzie
- 8. TSQL Obsada jako sumę pieniędzy
- 9. Zwrot pieniędzy za aplikację w Androidzie
- 10. Jak definiujesz rodzaj pieniędzy w F #
- 11. Reprezentacja binarna .NET dziesiętna
- 12. Django: reprezentacja ciągów modeli
- 13. C# stała binarna reprezentacja
- 14. Wewnętrzna reprezentacja list Haskella?
- 15. Ast reprezentacja funkcji lambda
- 16. Jak sformatować ciąg do pieniędzy
- 17. Reprezentacja HEX tablicy bajtowej
- 18. Kanoniczna reprezentacja BigDecimal
- 19. Reprezentacja złożonej zaplanowanej rekurencji w bazie danych
- 20. Reprezentacja prostej pętli for w JSTL/EL
- 21. Streszczenie Składnia Reprezentacja drzewa w C++
- 22. OCaml reprezentacja typu rekordu AST
- 23. Reprezentacja strukturalna, czynnikowa i atomowa?
- 24. C: Reprezentacja dużych liczb całkowitych
- 25. Django - reprezentacja graficzna modelu (ERD)
- 26. Wizualna reprezentacja części aplikacji Railsowej
- 27. unikać reprezentacja pułapka z memcpy
- 28. Dobry przykład klasy ilości lub pieniędzy
- 29. PHP/MySQL: Najlepsze praktyki operacji/przechowywania pieniędzy?
- 30. Wysyłanie pieniędzy z [SomePaymentProcesingCompany] na rachunek bankowy
co to pieniądze? – shingara
jak dziesiętne, int, pływające ... – luckytaxi
dm ma rację. Nigdy nie używaj liczb zmiennoprzecinkowych do reprezentowania pieniędzy (takich jak spływy, duble). To sprawi, że wiele butthurt. Stracisz centy podczas reprezentacji. Na przykład 10.2 może być reprezentowany jak 10.19999 (9). Podczas zaokrąglania i różnych operacji arytmetycznych otrzymasz zwiększający się błąd. [Dlaczego nie używać podwójnego do reprezentowania waluty] (http://stackoverflow.com/questions/3730019/why-not-use-double-or-float-to-represent-currency/3730040#3730040) – Dao