我建立一個檢查一個銀行帳號和排序代碼與外部API定義驗證,如果它們存在測試(即是正確的有效的英國銀行帳戶) 。由於這是一項昂貴的操作,我不想打擊API,除非帳號和排序代碼通過Rails的內置驗證。執行一個驗證只有在其他所有校驗通過
例如,我有這些基本的驗證:
validates_presence_of :sort_code, :account_number
validates_format_of :sort_code, :with => Regexes::SORT_CODE
validates_format_of :account_number, :with => Regexes::ACCOUNT_NUMBER
然後,我有我的自定義驗證:
validate :check_valid_bank_account
def check_valid_bank_account
# code here is irrelevant, but essentially this hits the API
# if it's a valid UK bank account all is OK, if not we add an error
end
我想要確保的是,自定義驗證只有當其餘的執行的模型是有效的。當我能夠自己解決問題時,沒有人支付25p的費用被告知沒有提供帳號。
我知道我可以編寫一些邏輯來檢查這兩個屬性是不是空白,並手動將它們與正則表達式匹配...但這似乎不是一個非常Rails的方式。
我不認爲如果check_valid_bank_account驗證其他驗證之前運行,這將工作。 – 2011-01-28 16:56:33