現有模型 User,屬性包括 :id, :username, :password, :email, :age, :sex。 html
Rails應用程序中的 ActiveRecord 提供了一套經常使用且簡單的模型校驗器,能夠完成大多數狀況下的校驗工做 正則表達式
用戶名不可爲空,例: ruby
class User < ActiveRecord::Base validates_presence_of :username, :message => "username can not null" end
|
|
可選參數 less
:message | 驗證提示信息 |
用戶名不可重複,例: spa
class User < ActiveRecord::Base validates_uniqueness_of :username, :message => "username can not be same" end
|
|
可選參數 code
:message | 驗證提示信息 |
:scope | 驗證基於多個參數的惟一屬性值 |
:case_sensitive | 大小寫是否敏感 |
:allow_nil | 是否容許nil值 |
:allow_blank | 是否容許空值 |
用戶名長度大於6,小於50,例: orm
|
|
class User < ActiveRecord::Base validates_length_of :username, :minimum => 6, :maximum => 50, :too_short => "username is too short", :too_long => "username is too long" end
可選參數 htm
:minimum | 定義最小長度 |
:maximum | 定義最大長度 |
:is | 屬性值的精確長度 |
:within | 屬性值長度的有效範圍 |
:allow_nil | 是否容許nil值 |
:too_short | 長度小於最小值時的提示信息 |
:too_long | 長度大於最大值時的提示信息 |
:wrong_length | 屬性值不匹配時的提示信息 |
用戶年齡需爲整數,而且不能大於70,小於16,例: ci
|
|
class User < ActiveRecord::Base validates_length_of :age, :only_integer => true, :greater_than => 70, :less_than => 16, :message => "age is not in scope" end
可選參數 it
:message | 驗證提示信息 |
:only_integer | 是否必須爲整數 |
:greater_than | 屬性值必須大於或等於該項指定值 |
:greater_than_or_equal_to | 屬性值必須大於或等於該項指定值 |
:equal_to | 屬性值必須等於該項指定值 |
:less_than | 屬性值必須小於該項指定值 |
:less_than_or_equal_to | 屬性值必須小於或等於該項指定值 |
:odd | 屬性值必須爲奇數 |
:even | 屬性值必須爲偶數 |
用戶郵箱格式驗證(更多經常使用正則表達式),例:
|
|
class User < ActiveRecord::Base validates_format_of :email, :with => /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/, :message => "email parten is illegal" end
可選參數
:message | 驗證提示信息 |
:with | 須要匹配的正則表達式 |
註冊用戶時,兩次密碼填寫一致,例:
|
|
class User < ActiveRecord::Base validates_confirmation_of :password, :message => "password is not same" end
該驗證方法須要配合表單實現,Rails HTML內容爲:
<%= f.text_field :password %> <%= f.text_field :password_confirmation %>
可選參數
:message | 驗證提示信息 |