我建立一个检查一个银行帐号和排序代码与外部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