rails自定義校驗

2021-07-02 04:34:54 字數 1734 閱讀 1273

當內建的校驗 helpers 不能滿足專案需求時,可以根據具體需求來編寫自己的校驗器或者校驗方法。

其中,當有比較通用的規則需要校驗時,優先考慮使用自定義校驗器.

自定義校驗器

給需要校驗的單獨屬性新增自定義校驗器最便捷的方法是使用 activemodel::eachcalidator。這種情況下,自定義校驗類必須實現乙個 validate_each 方法,它接受三個引數:record,attribute 和 value,它們分別代表model物件例項,被校驗的屬性和被校驗屬性的值。

[ruby]view plain

copy

class datevalidator 

def validate_each(record, attribute, value)  

if options[:after]  

unless record[options[:after]] 

record.errors[attribute] <

endend

if options[:before]  

unless record[options[:before]] > value  

record.errors[attribute] <

endend

endend

使用方法:

[ruby]view plain

copy

class *** 

......  

validates_numericality_of  :price

#定義日期之間關係

validates :end_at, :date =>   

......  

end

如上例所示,可以將校驗helpers(validates_numericality_of )和自定義校驗結合在一起使用。

建立校驗helper

建立自己的校驗helpers,以便在多個model中復用.

在config/initializers資料夾下建立檔案extend_validate.rb,**如下:

[ruby]view plain

copy

activerecord::base.class_eval do

defself.validates_date_of(*attr_names)  

validates_with datevalidator, _merge_attributes(attr_names)  

endend

擴充套件時繼續追加定義類方法即可.

使用方法:

[ruby]view plain

copy

class *** 

......  

validates_numericality_of  :price

#定義日期之間關係

validates_date_of :end_at ,:after=> :start_at,:after_message => "結束時間不能早於開始時間")  

......  

end

完成效果:

自定義校驗

jquery.validator.addmethod isloginpsw function value,element return this.optional element tel2.test value 登入密碼以字母開頭 6 18 位長度,只能包含字元 數字和下劃線 jquery.vali...

自定義校驗

自定義校驗規則步驟如下 1 使用 validator.addmethod 校驗規則名稱 function value,element,params 2 在rules中通過校驗規則名稱使用校驗規則 3 在messages中定義該規則對應的錯誤提示資訊 其中 value是校驗元件的value值 elem...

jquery自定義校驗

jquery自定義校驗 自定義乙個方法例子 一 定義jquery validate的方法 validator.addmethod flushpricevalidate 引數說明 value 被校驗元素的 value值 element 代表被校驗元素,params 新增校驗規則時 function v...