Ruby On Rails 經常使用內建模型校驗器

一、約定

現有模型 User,屬性包括 :id,  :username,  :password,  :email,  :age,  :sex。 html

二、經常使用的模型校驗器

Rails應用程序中的 ActiveRecord 提供了一套經常使用且簡單的模型校驗器,能夠完成大多數狀況下的校驗工做 正則表達式

  • 非空校驗:validates_presence_of
  • 惟一校驗:validates_uniqueness_of
  • 數據長度校驗:validates_length_of
  • 數值校驗:validates_numericality_of
  • 數據格式校驗:validates_format_of
  • 確認校驗:validates_confirmation_of

三、非空校驗:validates_presence_of

用戶名不可爲空,例: ruby

class User < ActiveRecord::Base
    validates_presence_of :username, :message => "username can not null"
end



可選參數 less

:message 驗證提示信息

四、惟一校驗:validates_uniqueness_of

用戶名不可重複,例: 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 是否容許空值

五、數據長度校驗:validates_length_of

用戶名長度大於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 屬性值不匹配時的提示信息

六、數值校驗:validates_numericality_of

用戶年齡需爲整數,而且不能大於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 屬性值必須爲偶數

七、數據格式校驗:validates_format_of

用戶郵箱格式驗證(更多經常使用正則表達式),例:



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 須要匹配的正則表達式

八、確認校驗:validates_confirmation_of

註冊用戶時,兩次密碼填寫一致,例:



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 驗證提示信息
相關文章
相關標籤/搜索