2012-04-26 17 views
9

मेरे पास एक कस्टम सत्यापनकर्ता है और जब यह विफल रहता है तो मैं एक त्रुटि संदेश आउटपुट करने का प्रयास कर रहा हूं लेकिन ऐसा करने में असमर्थ रहा हूं। क्या कोई मुझे बता सकता है कि क्या मैं इसे सही जगह पर कर रहा हूं।कस्टम सत्यापनकर्ता को एक त्रुटि संदेश जोड़ना

class User < ActiveRecord::Base 
    self.table_name = "user" 

    attr_accessible :name, :ip, :printer_port, :scanner_port 

    validates :name,  :presence => true, 
          :length => { :maximum => 75 }, 
          :uniqueness => true       

    validates :ip,   :length => { :maximum => 75 }, 
          :allow_nil => true  

    validates :printer_port, :presence => true, :if => :has_association? 

    validates :scanner_port, :presence => true, :if => :has_association?   

    def has_association? 
    ip != nil 
    end 
end 

मैं इसे था इस प्रकार है:

validates :printer_port, :presence => true, :message => "can't be blank", :if => :has_wfm_association? 

लेकिन एक त्रुटि

Unknown validator: 'MessageValidator' 

प्राप्त था और जब मैं सत्यापनकर्ता के अंत में संदेश डालने की कोशिश की अल्पविराम अलग has_association?

validates :printer_port, :presence => {:message => "can't be blank", :if => :has_wfm_association?} 

इसका कारण यह है कि आप एक ही पंक्ति में एकाधिक सत्यापन लोड कर सकते हैं: प्रश्न चिह्न और अल्पविराम नारंगी

उत्तर

17

message और if मापदंडों presence के लिए एक हैश के अंदर होना चाहिए बदल गया

validates :foo, :presence => true, :uniqueness => true 

यदि आपने जिस तरीके से किया है, या if स्थिति में कोई संदेश जोड़ने का प्रयास किया है, तो रेल को यह नहीं पता होगा कि संदेश/सशर्त को लागू करने के लिए सत्यापन क्या है। तो इसके बजाय, आपको प्रति-सत्यापन संदेश सेट करने की आवश्यकता है:

validates :foo, :presence => {:message => "must be present"}, 
       :uniqueness => {:message => "must be unique"} 
+0

क्या मुझे उपस्थिति में सही कथन शामिल करने की आवश्यकता नहीं है? जब मैं ऐसा करता हूँ? और हैश का अंत एक साथ चल रहा है और दोनों नारंगी मोड़ रहे हैं। – Jay

+0

बस जगह डालने की जरूरत है, आपकी मदद के लिए धन्यवाद डिलन बहुत सराहना की :) – Jay

+0

मैं कैसे स्वीकार करूं? – Jay