當內建的校驗 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...