大部分有使用過 Active Model
的朋友們,都知道他有基本的 validation
可以使用,就像 Active Record
一樣。
下面快速幫讀者複習一下,內建的 validation 以及大概的使用方法。
validates_size_of
validates_length_of
# 驗證輸入字元長度。這兩個是一樣的 alias method。
validates_numericality_of
# 驗證輸入是否為數字,以及數字的範圍。
validates_format_of
# 驗證輸入字串的格式,常見於電話或 email 驗證。
validates_presence_of
validates_absence_of
# 這兩個相反,一個是必填,一個是必須留空。
# absence 用在 form object 可以用來驗證像是:不能存在類似的資料。
# 可以取代 uniqueness。Active Model 是沒有 uniqueness validation 的。
validates_inclusion_of
validates_exclusion_of
# 這兩個相反,一個是須在指定值(given array)內,一個則是必須不在指定值內。
validates_acceptance_of
# 預設是驗證該欄位是否有打勾(true or '1')
# 通常會被 presence or inclusion 取代 ... 。
validates_confirmation_of
# 會對 (attr)_confirmation 的欄位以進行重複輸入的驗證,像是確認密碼。
# 如果沒有建立 (attr)_confirmation or (attr)_confirmation= 的 method,他會直接幫你用 attr_reader or writer 建立。
validates
# 跟 Model 一樣可以傳入多個 attr or methods,以及要作 validation 的項目 as option
# 另外,也可以傳入共用的自定義 validator。之後會講
validate
# 跟 Model 一樣可以傳入 methods as symbol 去執行 instance method 的 validation
# 或者傳入 block as instance eval
# 反正就,很客製。
當然詳細用法還是參考 Rails API Dock
文件,甚至是 source code 會比較周全~
後面就不再多講解這些,畢竟有在玩 Rails model
的您各位一定都很熟了,反正只是要讓讀者您各位知道,大概有這些方法可用。
但是你知道,如果要給你的 Active Model
的 validation 前後也加上 callbacks 的話要怎麼做嗎?
明天我們來好好討論這個問題!