iT邦幫忙

2022 iThome 鐵人賽

DAY 8
0
Software Development

Rails Active Model系列 第 8

D-8 Active Model 本身有什麼功能? - validation

  • 分享至 

  • xImage
  •  

大部分有使用過 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 的話要怎麼做嗎?
明天我們來好好討論這個問題!


上一篇
D-7 attribute 預設值不能直接使用容器型別
下一篇
D-9 Active Model 擴充功能 - Validation callbacks
系列文
Rails Active Model28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言