MongoID ile Money ile nasıl çalışmalıyım? BigDecimal olarak yapılandırmalı mıyım? Raylar seviyesinde mi? ActiveRecord için Para adında bir şeyimiz var, ancak AFAIK sadece ARmongoid para gösterimi
cevap
MongoDB çeşitli BSON veri türlerini (int, long int, double) depolar. Parayı sent olarak (ABD dolarıysa) depolamanızı ve uzun int türünü kullanmanızı öneririm. Buna da rastladım
Maalesef Mongodb'daki BigDecimal mağazaları bir dizgedir, bu yüzden bir float veya int gibi toplamı, sıralama, vb.
Tamsayı muhtemelen soyut kendisine biraz para gem kullanarak, sent değer saklamak gitmek için yol olarak görünmektedir: https://github.com/RubyMoney/money
Mongo Öyle olduğunu düşünüyorum en modern makinelerde 64 bit kullanarak int depolayan sentlerde bile daha büyük bir miktara ihtiyaç duyma riski fazla değildir. ,9,223,372,036,854,775,808 ve 9,223,372,036,854,775,807 sent arasında saklayabileceğiniz gibi görünüyor, bu yüzden min/max değerini dolar cinsinden almak için iki ondalık basamak çıkar.
Sana alternatif olarak para-ray denemenizi öneriyoruz. https://github.com/RubyMoney/money-rails Oldukça bakımlı ve mongoid ile çalışıyor!
Eğer para mücevherden hoşlanıyorsanız, Para tipi olarak saklayabilirsiniz.
Bir örnek: Bir dizi olarak para saklayan https://gist.github.com/michaelkoper/5007636
[sent, para birimi]
class Product
include Mongoid::Document
field :price, type: Money
end
product = Product.new(:price => Money.new(1000, 'EUR'))
product.price.format
# => "€10.00"
- 1. mongoid
- 2. mongoid .limit mongoid 3.1.x
- 3. Uzun ömürlü mongoid modelinin uzatılması
- 4. Tamamen gösterimi
- 5. mongoid toplu işlem - initialize_unordered_bulk_op
- 6. MongoID bulmak veya
- 7. Mongoid `group()` koşullar
- 8. çağrılması bulmak (: hepsi) Mongoid
- 9. Raylar 3.1 Mongoid has_secure_password
- 10. Mongoid bulucular çalışmıyor mu?
- 11. Mongoid :: Hatalar :: DocumentNotFound raise_not_found_error
- 12. Objective-C/iOS'ta nasıl para temsil edilir?
- 13. Lambda fonksiyonunun ast gösterimi
- 14. Unicode olmayan XML gösterimi
- 15. atoi() onaltılık gösterimi dizgisinden
- 16. Git Etkileşimli gösterimi
- 17. Haskell listelerinin iç gösterimi?
- 18. PHP dizgilerinin iç gösterimi
- 19. Bayt dizisinin HEX gösterimi
- 20. RDF cümleleri gösterimi
- 21. Form gösterimi yenilendi
- 22. iOS çoklu video gösterimi
- 23. Intellij IDEA'da Macarca gösterimi
- 24. Form ile para birimini seçin Para mücevher ile seçin
- 25. Şirket para birimi cinsinden para birimi AX SSRS raporu
- 26. Para birimi sembolünü para biriminden türetmek mümkün mü?
- 27. Para biçimi için Naira Para birimi simgesi nasıl kullanılır? Html
- 28. Crm 2011 para birimi alanları para birimi simgesini değiştirmiyor
- 29. Para Birimi xml bir çok para birimiyle besleniyor
- 30. Para birimi simgesini değiştirin veya giriş birimi para biriminden kaldırın
Para nedir? – shingara
ondalık, int, yüzer ... – luckytaxi
dm haklı. Parayı temsil etmek için kayan nokta sayılarını asla kullanmayın (yüzer, çiftler gibi). Bu çok amada edecek. Temsili sırasında senleri kaybedeceksin. Örneğin 10.2, 10.19999 (9) gibi temsil edilebilir. Yuvarlama ve farklı aritmetik işlemler sırasında artan hata alırsınız. [Neden para birimini temsil etmek için çift kullanmayın] (http://stackoverflow.com/questions/3730019/why-not-use-double-or-float-to-represent-currency/3730040#3730040) – Dao