पहले ग्रेटर है, मुझे कहते हैं कि मैं अत्यंत नई रेल के लिए कर रहा हूँ दें (इसे साथ समय या दो toyed लेकिन अपने आप को अब यह के साथ एक पूर्ण परियोजना लिखने के लिए मजबूर कर रहा, कल उस पर शुरू कर दिया)।एक मॉडल संपत्ति सत्यापित किया जा रहा से एक और
अब मैं यह सत्यापित करने की कोशिश कर रहा हूं कि एक मॉडल संपत्ति (शब्दावली?) एक से अधिक है। यह के लिए greater_than
विकल्प के साथ एक आदर्श उदाहरण प्रतीत होता है, लेकिन हां, जो मुझे greater_than expects a number, not a symbol
बताते हुए एक त्रुटि फेंकता है। यदि मैं उस प्रतीक को टाइप करने का प्रयास करता हूं तो .to_f
मुझे undefined method
त्रुटि मिलती है।
यहां अंततः मैंने जो किया और मैं उत्सुक हूं कि कोई बेहतर तरीका है या नहीं। यह परियोजना रिलीज को नियंत्रित करने के लिए एक साधारण प्रणाली है, हमारे पास केवल प्रमुख/मामूली रिलीज (एक-डॉट) है, इसलिए यहां सही निर्णय की तरह फ़्लोट महसूस किया गया है।
class Project < ActiveRecord::Base
validates_numericality_of :current_release
validates_numericality_of :next_release
validate :next_release_is_greater
def next_release_is_greater
errors.add_to_base("Next release must be greater than current release") unless next_release.to_f > current_release.to_f
end
end
यह काम करता है - यह प्रासंगिक इकाई परीक्षण (आपके दृश्य मनोरंजन के लिए नीचे) से गुजरता है, मैं अगर वहाँ एक आसान तरीका है के रूप में बस उत्सुक हूँ - कुछ मैं अन्यथा की कोशिश की है हो सकता है।
प्रासंगिक इकाई परीक्षण:
# Fixture data:
# PALS:
# name: PALS
# description: This is the PALS project
# current_release: 1.0
# next_release: 2.0
# project_category: 1
# user: 1
def test_release_is_future
project = Project.first(:conditions => {:name => 'PALS'})
project.current_release = 10.0
assert !project.save
project.current_release = 1.0
assert project.save
end
बहुत बढ़िया जवाब, विस्तृत प्रतिक्रिया - मैं तो बस जो चाहते हैं उसे (साथ ही कुछ आश्वासन)। –
ग्रेट उत्तर, कृपया "greather_than" मौका मिलने पर वर्तनी त्रुटि ठीक करें। एक बार फिर धन्यवाद। – ghayes
हो गया, धन्यवाद। –