Я создаю специальную проверку, которая проверяет номер банковского счета и код сортировки с внешним 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 a valid UK bank account all is OK, if not we add an error
end
Я хочу убедиться, что пользовательская проверка выполняется только в том случае, если остальная часть модели действительна. Нет смысла платить 25p, чтобы не было сказано, что номер счета не был предоставлен, когда я могу это проработать!
Я знаю, что могу написать некоторую логику, которая проверяет, что два атрибута не пустые, и сопоставляет их с регулярным выражением вручную... но это не похоже на Rails-путь.