यहाँ क्या मैं अपने मॉडल में उपयोग कर रहा हूँ है: अगर मैं हाथ रेल कंसोल में मैं मैं क्या चाहते द्वारा strip_dollar_sign समारोह से लाइन को चलानेरेल में सत्यापन से पहले मैं मूल्य से डॉलर के संकेत कैसे लगा सकता हूं?
before_validation :strip_dollar_sign
validates :amount_due,
:format => { :with => /^\d+??(?:\.\d{0,2})?$/ },
:numericality => {:greater_than => 0}
private
def strip_dollar_sign
self.amount_due = self.amount_due.to_s.tr!('$,','').to_f
end
(यानी $ 400 400.0 के रूप में समाप्त होता है), लेकिन जब मैं अपने ऐप में वास्तविक रूप का उपयोग करता हूं मान हमेशा 0.0 के रूप में समाप्त होता है। कोई भी पकड़ता है कि मैं क्या गलत कर रहा हूँ?
पैसा फ्लोट के रूप में संग्रहीत नहीं किया जाना चाहिए, लेकिन डेटाबेस में दशमलव और रूबी में बिगडिसीमल के रूप में। फ़्लोट्स में गोलाकार त्रुटियां हो सकती हैं जो अप्रत्याशित परिणाम दे सकती हैं। – DGM