日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Ruby on Rails 的检验方法(Validation Helpers)大全

發布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ruby on Rails 的检验方法(Validation Helpers)大全 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://www.cslog.cn/Content/ruby_on_rails_validation_helpers

可以自定義validate(), 這個方法在每次保存數據時都會被調用.
如:
def validate
?if name.blank? && email.blank?
??errors.add_to_base("You must specify a name or an email address")
?end
end
同時也可以自定義 validate_on_create(), validate_on_update()方法.
?valid?()方法可以隨時調用,用來測試數據是否能通過校驗
返回的錯誤信息可用 error_messages_for(model)方法顯示.
如:<%= error_messages_for 'article' %>

校驗大全:
validates_acceptance_of
?指定checkbox應該選中. (如:(*)我同意條款)
?用法:validates_acceptance_of attr... [ options... ]
?參數:message text? 默認:“must be accepted.”
???:on :save, :create, or :update
?實例:
?class Order < ActiveRecord::Base
??validates_acceptance_of :terms,
??????????????:message =>?"Please accept the terms to proceed"
?end

validates_associated
?查驗指定的object.
?用法:validates_associated name... [ options... ]
?參數:message text 默認: is “is invalid.”
???:on :save, :create, or :update
?實例:
?class Order < ActiveRecord::Base
??has_many :line_items
??belongs_to :user
??validates_associated :line_items,
????????????:message =>?"are messed up"
??validates_associated :user
?end

validates_confirmation_of
?數據重校
?用法:validates_confirmation_of attr... [ options... ]
?參數:message text 默認 “doesn’t match confirmation.”
???:on :save, :create, or :update
?實例:
?對密碼表:
?<%= password_field "user", "password" %><br />
?<%= password_field "user", "password_confirmation" %><br />
?#第二表名為xxxx_confirmation
?class User < ActiveRecord::Base
??validates_confirmation_of :password
?end

validates_each
?使用block檢驗一個或一個以上參數.
?用法:validates_each attr... [ options... ] { |model, attr,?value| ... }
?參數:allow_nil boolean?設為true時跳過nil對象.
???:on :save, :create, or :update
?實例:
?class User < ActiveRecord::Base
??validates_each :name, :email do |model, attr,?value|
???if?value?=~ /groucho|harpo|chico/i
????model.errors.add(attr,"You can't be serious, #{value}")
???end
??end
?end

validates_exclusion_of
?確定被檢對象不包括指定數據
?用法:validates_exclusion_of attr..., :in => enum [ options... ]
?#enum指一切可用include?()判斷的范圍.
?參數:allow_nil 設為true將直接跳過nil對象.
???:in (or :within) enumerable?
???:message text 默認為: “is not included in the list.”
???:on :save, :create, or :update
?實例:
?class User < ActiveRecord::Base
??validates_exclusion_of :genre,
????????????:in => %w{ polka twostep foxtrot },
????????????:message =>"no wild music allowed"
??validates_exclusion_of :age,
?????????????:in => 13..19,
?????????????:message =>"cannot be a teenager"
?end

validates_inclusion_of
?確認對象包括在指定范圍
?用法:validates_inclusion_of attr..., :in => enum [ options... ]
?參數:allow_nil 設為true直接跳過nil對象
???:in (or :within) enumerable An enumerable object.
???:message text 默認:“is not included in the list.”
???:on :save, :create, or :update
?實例:
?class User < ActiveRecord::Base
??validates_inclusion_of :gender,
????????????:in => %w{ male female },
????????????:message =>"should be 'male' or 'female'"
??validates_inclusion_of :age,
????????????:in => 0..130,
????????????:message =>"should be between 0 and 130"
?end

validates_format_of
?用正則檢驗對象
?用法:validates_format_of attr..., :with => regexp [ options... ]
?參數:message text 默認為: “is invalid.”
???:on :save, :create, or :update
???:with 正則表達式
?實例:
?class User < ActiveRecord::Base
??validates_format_of :length, :with => /^"d+(in|cm)/
?end

validates_length_of
?檢查對象長度
?用法:validates_length_of attr..., [ options... ]
?參數:in (or :within) range?
???:is integer?
???:minimum integer?
???:maximum integer?
???:message text 默認文字會根據參數變動,可使用%d 取代確定的最大,最小或指定數據.
???:on :save, :create, or :update
???:too_long text 當使用了 :maximum后的 :message?
???:too_short text ( :minimum )
???:wrong_length ( :is)
?實例:
?class User < ActiveRecord::Base
??validates_length_of :name, :maximum => 50
??validates_length_of :password, :in => 6..20
??validates_length_of :address, :minimum => 10,
????????????????:message =>"seems too short"
?end

validates_numericality_of
?檢驗對象是否為數值
?用法:validates_numericality_of attr... [ options... ]
?參數:message text 默認 “is not a number.”
???:on :save, :create, or :update
???:only_integer?
?實例:
?class User < ActiveRecord::Base
??validates_numericality_of :height_in_meters
??validates_numericality_of :age, :only_integer => true
?end

validates_presence_of
?檢驗對象是否為空
?用法:validates_presence_of attr... [ options... ]
?參數:message text 默認:“can’t be empty.”
???:on :save, :create, or :update
?實例:
?class User < ActiveRecord::Base
??validates_presence_of :name, :address
?end

validates_uniqueness_of
?檢驗對象是否不重復
?用法:validates_uniqueness_of attr... [ options... ]
?參數:message text 默認: “has already been taken.”
???:on :save, :create, or :update
???:scope attr 指定范圍
?實例:
?class User < ActiveRecord::Base
??validates_uniqueness_of :name
?end

?class User < ActiveRecord::Base
??validates_uniqueness_of :name, :scope =>"group_id"
?end
?#指定在同一group_id的條件下不重復.

常用正則:

E-Mail地址格式:
validates_format_of???? :email,
??????????????????????? :with?????? => /^([^@"s]+)@((?:[-a-z0-9]+".)+[a-z]{2,})$/i,
??????????????????????? :message??? => 'email must be valid'

網址格式:
validates_uri_existence_of :url, :with =>
??????? /(^$)|(^(http|https)://[a-z0-9] ([-.]{1}[a-z0-9] )*.[a-z]{2,5}(([0-9]{1,5})?/.*)?$)/ix

轉載于:https://www.cnblogs.com/odbc/archive/2009/05/14/RubyonRailsValidationHelpers.html

總結

以上是生活随笔為你收集整理的Ruby on Rails 的检验方法(Validation Helpers)大全的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。