У меня есть модель, которая запрашивает адресную информацию, в частности она запрашивает два разных типа почтовых индексов. (один для здания, а другой для владельца здания).
Я решил, что было бы неплохо добавить быструю проверку, чтобы убедиться, что штат и почтовый индекс соответствуют каждому адресу. Я написал этот изящный метод, чтобы сделать это, и решил проверить оба почтовых индекса .... но по какой-то странной причине вторая проверка срабатывает только тогда, когда запускается первая. IE, у меня может быть правильный первый почтовый индекс и неправильный второй почтовый индекс, и второй неправильный почтовый индекс будет разрешен. Если у меня неправильный первый и второй почтовый индекс, тогда будет получена проверка второго почтового индекса, и я получу сообщения об ошибках для обоих.
Мой код указан ниже. owner_address_zip_check
, кажется, работает только в случае сбоя building_zip_check
. У кого-нибудь есть мысли о том, что здесь делать?
validate :building_zip_check
validate :owner_address_zip_check
def building_zip_check
state_selected = "Building state"
state_zip_test(building_zip, building_zip, state_selected)
end
def owner_address_zip_check
state_selected = "Owner address state"
state_zip_test(owner_address_zip, owner_address_state, state_selected)
end
def state_zip_test(zip, state, state_selected)
if zip.between?(35000, 36999) && state != 'AL'
errors.add :base, "The Zip Code chosen, #{zip} is an Alabama Zip Code. However the state chosen for #{state_selected} does not match Alabama"
elsif zip.between?(99500, 99999) && state != 'AK'
errors.add :base, "The Zip Code chosen, #{zip} is an Alaska Zip Code. However the state chosen for #{state_selected} does not match Alaska"
elsif zip.between?(85000, 86999) && building_state != 'AZ'
errors.add :base, "The Zip Code chosen, #{zip} is an Arizona Zip Code. However the state chosen for #{state_selected} does not match Arizona"
elsif ...