¿Cómo debo trabajar con Money con MongoID? ¿Debo configurarlo como BigDecimal? ¿Y a nivel de rieles? Para ActiveRecord tenemos algo llamado Money, pero AFAIK solo admite ARrepresentación monetaria en mongoid
Respuesta
MongoDB almacena números en varios tipos de datos BSON (int, long int, double). Le recomiendo que almacene dinero como centavos (si es moneda de EE. UU.) Y use el tipo de datos int largo.
Me encontré con esto también. Desafortunadamente, BigDecimal almacena en Mongodb como una cadena, por lo que no le permitirá sumar, ordenar, etc. en ella como un flotador o int.
entero parece ser el camino a seguir almacenando el valor en céntimos, posiblemente utilizando la gema dinero a ella abstraer un poco: https://github.com/RubyMoney/money
Mongo almacena el int usando 64 bits en la mayoría de las máquinas modernas Creo que sí existe no hay mucho riesgo de necesitar una cantidad mayor, incluso en centavos. Parece que puedes almacenar entre -9,223,372,036,854,775,808 y 9,223,372,036,854,775,807 centavos, así que quítate dos decimales para obtener tu valor mínimo/máximo en dólares.
le recomiendo que pruebe dinero-carriles como una alternativa. https://github.com/RubyMoney/money-rails ¡Está muy bien mantenido y funciona también con mongoid!
Si le gusta la gema de dinero, puede almacenarla como un tipo de dinero.
Un ejemplo: https://gist.github.com/michaelkoper/5007636
Almacena el dinero como una matriz [centavos de dólar, la moneda]
class Product
include Mongoid::Document
field :price, type: Money
end
product = Product.new(:price => Money.new(1000, 'EUR'))
product.price.format
# => "€10.00"
- 1. ¿Qué clase usar para la representación monetaria?
- 2. no MongoId en consulta
- 3. MongoDB y Mongoid en producción
- 4. Fecha de consulta en Mongoid
- 5. embeds_many y references_many en Mongoid
- 6. Consulta en Mongoid Hash Field
- 7. Fecha en Mongoid consultas de
- 8. Extensión Mongoid .ne
- 9. Recursos heredados y Mongoid
- 10. ¿Tiene Mongoid Map/Reduce?
- 11. Mongoid y has_secure_password
- 12. Agregado con Mongoid
- 13. HABTM mongoid following/follower
- 14. Administración de migraciones mongoid
- 15. Mongoid relational Polymorphic Association
- 16. Mongoid has_and_belongs_to_many associations
- 17. Generadores Mongoid y ActiveRecord
- 18. MongoId encontrar o find_by
- 19. MongoId encontrar VS donde
- 20. Rails 3.1 Mongoid has_secure_password
- 21. Mongoid y CanCan
- 22. find_by_sql equivalent for mongoid?
- 23. Recuperando una matriz de identificadores en Mongoid
- 24. Usar LIKE/regex con variable en mongoid
- 25. Buscar y eliminar todo en mongo/mongoid
- 26. eliminar un documento incrustado en mongoid
- 27. Diferencia entre embeds_many y has_many en mongoid
- 28. 1 - N relaciones en MongoId (rieles)
- 29. Indexación en mongoid: cuándo y con qué frecuencia debo ejecutar rake db: mongoid: create_indexes?
- 30. mongoid y mongomapper con eventmachine
lo que es el dinero? – shingara
como decimal, int, flotantes ... – luckytaxi
dm es correcto. Nunca use números de coma flotante para representar dinero (como flotadores, dobles). Esto hará mucho butthurt. Perderás centavos durante la representación. Por ejemplo, 10.2 puede representarse como 10.19999 (9). Durante el redondeo y diferentes operaciones aritméticas obtendrá un error creciente. [¿Por qué no usar el doble para representar la moneda] (http://stackoverflow.com/questions/3730019/why-not-use-double-or-float-to-represent-currency/3730040#3730040) – Dao