Проверка Rails запускается только при сбое другого - PullRequest
0 голосов
/ 01 марта 2020

У меня есть модель, которая запрашивает адресную информацию, в частности она запрашивает два разных типа почтовых индексов. (один для здания, а другой для владельца здания).

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