Вопрос

Как я должен работать с Деньги с монгоидом? Должен ли я настроить его как BigDecimal? А на уровне рельсов? Для Acciverecord у нас есть что называемые деньги, но AFAIK это просто поддерживает AR

Это было полезно?

Решение

Mongodb Магазины номеров в разных Босоз Типы данных (INT, длинные INT, Double). Я рекомендую вам хранить деньги в целях (если нам валюта) и используйте длинный int datatype.

Другие советы

Я также столкнулся с этим. К сожалению, большие магазины в Mongodb как строка, поэтому она не позволит вам суммировать, сортировать и т. Д. На нем, как поплавок или INT.

Целое число, кажется, способ пойти в хранение стоимости в центах, возможно, использование драгоценного камня денег немного аннотация: https://github.com/rubymoney/money

Mongo сохраняет int используя 64 бита на большинстве современных машин, которые я думаю, что не так много риска необходимости большего количества даже в центах. Похоже, вы можете хранить между -9 223,372 036,854 775 808 и 9,223 372 036 854 775 807 центов, поэтому снимайте два десятичных места, чтобы получить значение вашего MIN / MAX в долларах.

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

Если вам нравятся деньги GEM, вы можете хранить его как тип денег.

Пример: https://gist.github.com/michaelkoper/5007636.

Он хранит деньги как массив [центов, валюта

class Product
   include Mongoid::Document

  field :price,    type: Money
end

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

Я рекомендую вам попробовать деньги в качестве альтернативы. https://github.com/rubymoney/money-rails. Это довольно хорошо поддерживается и работает с монгоидом!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top