Я создаю пользовательскую проверку, которая проверяет номер банковского счета и код сортировки с помощью внешнего 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
Я хочу убедиться, что пользовательская проверка выполняется только в том случае, если остальная часть модели действительна. Нет смысла платить 25 пенсов за то, что мне сказали, что номер счета не был предоставлен, когда я смогу решить это сам!
Я знаю, что мог бы написать некоторую логику, которая проверяет, чтобы два атрибута не были пустыми, и сопоставляла их с регулярным выражением вручную ... но это не похоже на метод Rails.