→ mars90226:雖然跟ActiveRecord不熟,不過應該是因為沒有繼承吧? 01/23 00:46
→ aquarianboy:因為問題一的Person只是一個一般的Ruby Class 01/23 04:34
→ aquarianboy:它不知道validates_with是在哪邊定義的 01/23 04:34
→ aquarianboy:所以需要特別標示來源 :) 01/23 04:35
感謝樓上前輩回答=)
話說我另外還找到一篇,我想對一些人也許有幫助:
http://tinyurl.com/4x7jbd5
可是我還有一個問題是,為何第二段的用法只需要寫:
validates :email, :presence => true, :email => true
就會呼叫到 EmailValidator 的 validate_each?
意思是如果我有其他 attribute ,只要定義一個 class 名叫
AttrNameValidator 就可以了嗎?
※ 編輯: tonytonyjan 來自: 140.113.246.1 (01/23 13:31)
我來自問自答了:
我剛剛看了一下 PresenceValidator 的繼承關係:
ActiveModel::Validations::PresenceValidator < ActiveModel::EachValidator
所以我想當我們寫出如下的程式碼時:
validates :attr_name, :presence => true
Rails 就會去找有沒有 PresenceValidator。
也就是當我寫
validates :attr_name, :abc => ture
Rails 就會去找有沒有 AbcValidator
但還不曉得若找不到會發生什麼事情,所以等等來實驗看看。
※ 編輯: tonytonyjan 來自: 140.113.246.1 (01/23 13:41)
確實擲出了如下的異常:
ArgumentError: Unknown validator: 'AbcValidator'
※ 編輯: tonytonyjan 來自: 140.113.246.1 (01/23 13:49)