Supongo que los flotadores no son ideales para la divisa. Mongoid es compatible con Float y BigInteger. ¿Cuál es el mejor enfoque para almacenar y trabajar con valores de moneda?Tipo de datos para la divisa que usa Mongoid
12
A
Respuesta
6
que te pueden probablemente querrá tener un vistazo a la Money gem.
La forma en que funciona, es para representar las cantidades de dinero en centavos y enteros de uso. Puede seguir de esta manera y almacenar sus datos como un número entero para que no tenga que lidiar con la precisión de Float.
0
flotadores que funcionan bien para la moneda si no se utiliza realmente la parte de fracción, es decir, si sólo se almacenó preescalado valores integrales. Los flotantes almacenan enteros y realizan operaciones de enteros exactamente.
Por supuesto, en ese punto, que también podría usar números enteros.
1
Qué dice Simone.
que acaba de insertar la gema dinero en mi proyecto y se puede almacenar como un tipo constructivo así dinero.
class Product
include Mongoid::Document
field :price, type: Money
end
Money.class_eval do
# Converts an object of this instance into a database friendly value.
def mongoize
[cents, currency.to_s]
end
class << self
# Get the object as it was stored in the database, and instantiate
# this custom class from it.
def demongoize(object)
cur = object[1] || Money.default_currency
Money.new(object[0], cur)
end
# Takes any possible object and converts it to how it would be
# stored in the database.
def mongoize(object)
case object
when Money
object.mongoize
else object
end
end
# Converts the object that was supplied to a criteria and converts it
# into a database friendly form.
def evolve(object)
case object
when Money then object.mongoize
else object
end
end
end
end
Cuestiones relacionadas
- 1. formato de cadena para números o divisa?
- 2. En un tipo de cambio de divisa, ¿cuál es la cantidad máxima de decimales utilizada?
- 3. ¿Qué usa Microsoft como tipo de datos para cadenas Unicode?
- 4. ¿Cómo puedo probar el tipo de consulta que generará Mongoid?
- 5. Administración de migraciones mongoid
- 6. Mongoid: tipo de cadenas de marcas de tiempo?
- 7. Teclas personalizadas para la asociación Mongoid
- 8. tipo de datos enum para liquibase
- 9. Reemplazando un método que usa borrado de tipo
- 10. ¿Qué tipo de estructura de datos se usa para los mapas inmutables?
- 11. ¿Cómo se usa la afinidad de tipo SQLite 3?
- 12. ¿Mejor tipo para datos UTF-8?
- 13. problema de la herencia MongoId
- 14. cómo hacer que la relación funcione has_and_belongs_to_many en MongoId
- 15. Migración de una base de datos de Activerecord a Mongoid
- 16. ¿Cómo se usa un tipo de datos (tabla) definido en otra base de datos en SQL2k8?
- 17. ¿Cómo deserializo datos viejos para un tipo que ha cambiado?
- 18. ¿Qué tipo de gramática se usa para analizar PostgreSQL?
- 19. Rieles: almacenamiento de datos cifrados en la base de datos
- 20. find_by_sql equivalent for mongoid?
- 21. ¿Qué tipo de alcance usa Haskell?
- 22. Fecha en Mongoid consultas de
- 23. Tipo de datos incorrectos devueltos para la fecha en jtds.jar
- 24. Object.CompareTo (Object) para tipo de datos desconocido
- 25. ¿Alguien que usa Python para proyectos integrados?
- 26. Elegir el tipo de datos para MySQL?
- 27. Tipo de datos SQL para System.Drawing.Color
- 28. ¿Alguien que usa bases de datos NoSQL para el almacenamiento de registros médicos?
- 29. ¿Qué tipo de datos .NET es mejor para mapear el NÚMERO de tipo de datos de Oracle en NHibernate?
- 30. Guardar el objeto heredado para separar la colección en Mongoid
Estoy leyendo que se necesitan librerías numéricas de "precisión fija" cuando se trabaja con moneda. – timstepp
http://www.codeguru.com/forum/showthread.php?threadid=503157 es una discusión de ejemplo. – timstepp