2014-03-13 16 views
0

當我檢查對象是否有效時<%= current_user.contact.valid? %>它返回false。但是<%= current_user.contact.errors.count %>返回0。我發現solution有些人工作,但我不清楚,這對我來說很好。有效爲假,但錯誤爲空

驗證了Contact

validates :RPNumber, :RPSerial, :RPNumber, :RPWho, :RPWhen, :RPDivisionCode, 
      :Name, :RPDateBorn, :RPWhereBorn, :RPAddress, :RPFamilyStatus, :RPChild, 
      :ZPNumber, :ZPWhereBorn, :ZPWhen, :ZPWhenEnd, :ZPWho, :GenderID, :ZPFIO, presence: true 

    validates_format_of :ZPFIO, with: /^[a-zA-Z\s\-]*$/, message: 'ZPFIO' 
    validates_format_of :Phone, with: /7\(\d+\)\d+/, message: 'Phone' 
    validates_format_of :PhoneCode, with: /\d+/, message: 'PhoneCode' 
    validates_format_of :PhoneNumber, with: /\d+/, message: 'PhoneNumber' 
    validates_format_of :Web, with: /^(http|https)\:\/\/([a-z0-9][a-z0-9_-]*(?:.[a-z0-9][a-z0-9_-]*)+):?(d+)?\/?$/i, allow_blank: true, message: 'Web' 
    validates_format_of :Mail, with: /^([0-9a-z]*([-|_]?[0-9a-z]+)*)(([-|_]?)\.([-|_]?)[0-9a-z]*([-|_]?[0-9a-z]+)+)*([-|_]?)@([0-9a-z]+([-]?[0-9a-z]+)*)(([-]?)\.([-]?)[0-9a-z]*([-]?[0-9a-z]+)+)*\.[a-z]{2,4}$/i, message: 'Mail' 
+0

你應該張貼的'Contact'模型的代碼(或至少與驗證的代碼,如果它是一個很大的類)... – Baldrick

+0

@Baldrick添加驗證 –

回答

1

你做current_user.contact每次你犯了一個新的聯繫人對象。所以,你在做什麼是這樣的:

#make a new contact object and run validations on it 
current_user.contact.valid? 

#make a new contact object, which hasn't had validation run on it, then see if it has errors 
current_user.contact.errors.count 

試試這個:

contact = current_user.contact 
contact.valid? 
contact.errors.count