2011-10-04 3 views
14

में स्थिति का उपयोग करना है, तो: रेल 3.0.3रेल: एकाधिक सत्यापन

मैं इस जैसे सत्यापन है एक:

validates_numericality_of :person_weight_kg, :greater_than => 0, :message => "value_must_be_number_over_zero", :if => :bmi_calculation?, :if => :is_metric? 

कि मैं कई के लिए मान्य करने के लिए करना चाहते हैं-शर्तों (जैसे कि उदाहरण)। लेकिन ऐसा लगता है कि, रेल इन बयानों को OR के रूप में मानते हैं। कोई झूठा रिटर्न देता है और एक सत्य लौटाता है जो सत्यापन को पार करता है।

तो, मैं यह कैसे जांचूं कि यह सत्यापन दोनों if-statement (bmi_calculation और is_metric) को पूरा करता है?

उत्तर

41

if शर्त के रूप में एक लैम्ब्डा का उपयोग करें:

validates_numericality_of :person_weight_kg, 
    if: -> record { record.bmi_calculation? && record.is_metric? } 
+1

धन्यवाद! वह चाल है ... – Christoffer

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

  • कोई संबंधित समस्या नहीं^_^