Pergunta

Como devo trabalhar com Dinheiro com mongóides? Devo configurá -lo como BigDecimal? E no nível dos trilhos? Para o ActiveRecord, temos algo chamado dinheiro, mas Afaik ele apenas suporta AR

Foi útil?

Solução

MongoDB armazena números em vários BSON Tipos de dados (int, long int, duplo). Eu recomendo você armazenar dinheiro como centavos (se a moeda dos EUA) e usar o tipo de dados long Int.

Outras dicas

Eu também encontrei isso. Infelizmente, as lojas BigDecimal em MongoDB como uma corda, para que não deixe você resumir, classificar, etc. como um flutuador ou int.

O número inteiro parece ser o caminho a seguir armazenando o valor em centavos, possivelmente usando a jóia do dinheiro para abstrair um pouco: https://github.com/rubymoney/money

O Mongo armazena o INT usando 64 bits na maioria das máquinas modernas, acho que não há muito risco de precisar de uma quantidade maior, mesmo em centavos. Parece que você pode armazenar entre -9.223.372.036.854.775.808 e 9.223.372.036.854.775.807 centavos, então tire dois lugares decimais para obter seu valor min/máximo em dólares.

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

Se você gosta da jóia do dinheiro, pode armazená -la como tipo de dinheiro.

Um exemplo: https://gist.github.com/michaelkoper/5007636

Ele armazena o dinheiro como uma matriz [centavos, moeda

class Product
   include Mongoid::Document

  field :price,    type: Money
end

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

Eu recomendo que você tente os trilhos de dinheiro como alternativa. https://github.com/rubymoney/money-rails É muito bem conservado e trabalha com mongóides também!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top