2012-08-04 13 views
35

मेरे फ़ील्ड हैं: tax rate और tax amount जिसमें मैं सकारात्मक मानों को सत्यापित करना चाहता हूं।गैर-ऋणात्मक पूर्णांक और दशमलव मानों के लिए सत्यापन

मैं इस मान्यता ने लिखा है:

:format => { :with => /\A[+]?\d+\Z/} 

लेकिन यह 4.67 की तरह एक दशमलव बिंदु के साथ संख्या नहीं ले रही है। और यह मुझे एक त्रुटि फेंक रहा है। पूर्णांक और फ़्लोटिंग पॉइंट मानों पर किस प्रकार का सत्यापन कार्य करेगा? उदाहरण के लिए : 2, 57, 54.56 पास होना चाहिए लेकिन -2.56, -87 विफल होना चाहिए।

उत्तर

107

यह काम नहीं करता है?

validates :tax_rate, inclusion: { in: 0..5 } 

ऐसा लगता है मानों की अनुमति देता है:

validates :your_field, :numericality => { :greater_than_or_equal_to => 0 } 

(निम्नलिखित नियम अधिक सही हो जाएगा :)

validates :your_field, :numericality => { :greater_than_or_equal_to => 0, :less_than_or_equal_to => 100 } 
+0

Thanx। मैं कोशिश करुंगा। –

+0

फ़ील्ड एक स्ट्रिंग या फ्लोट है? यदि यह एक स्ट्रिंग नहीं है, तो आपको उस पर regexp नहीं करना चाहिए। इस उदाहरण की तरह कुछ बेहतर होगा। आपको एक सत्यापन की आवश्यकता होगी जो जांचता है कि यह <0 – Ultimation

6

आप इस्तेमाल कर सकते हैं करों के लिए लगता है कि 0, 2, 1.2, 3.2

उम्मीद है कि यह मदद करता है! प्रतिक्रिया के लिए

+2

है, मैंने कुछ सत्यापन में उसी वाक्यविन्यास का उपयोग किया था जिसे मैं पहले परीक्षण कर रहा था लेकिन इसका उपयोग करने का फैसला नहीं किया। यदि कोई उपयोगकर्ता उस सीमा के बाहर एक मान दर्ज करता है, तो उन्हें एक त्रुटि मिलती है जो "कुछ शामिल नहीं है।" मैंने ': big_than_or_equal_to' जैसे समाधान का चयन किया क्योंकि उपयोगकर्ता को अधिक अर्थपूर्ण त्रुटि प्रस्तुत की गई है। – Tass

संबंधित मुद्दे