Как разрешить / проверить только строку, начинающуюся с определенных символов? - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь выяснить, как проверять канадские почтовые коды прямо перед их сохранением в базе данных rails. Но я не хочу делать это с регулярным выражением в моей проверке. Я хочу сохранить существующий почтовый индекс, начинающийся с определенных символов, а затем не заботясь о том, что будет после, пока начальные символы совпадают с тем, что я установил.

Например, если кто-то вводит V7C2X2, V7C1X1 или V7B1X1, он должен принять его, поскольку он начинается с символов V7C или V7B. Он должен отклонить любую запись, которая не начинается с V7C или V7B.

У меня есть это прямо сейчас:

class Postal < ApplicationRecord
  validates_inclusion_of :postalcode, :in => ["V7C", "V7B"]
end

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

Проверьте validates_format_of. Вы можете сделать следующее:

validates_format_of :postalcode, with: /^(V7B|V7C)/

Также занимает без: / ** /

0 голосов
/ 31 марта 2020

Вы можете использовать пользовательский валидатор.

class Postal < ApplicationRecord
  validate :code_includes

  private

  def code_includes
    ["V7C","V7B"].include? postalcode
  end
end

Это просто проверит, что почтовый индекс содержит любую из этих двух строк в любом месте в качестве подстроки.

Чтобы проверить, что почтовый индекс начинается с одного из те два, которые вы могли бы сделать

class Postal < ApplicationRecord
  validate :code_starts_with

  private

  def code_starts_with
    postalcode.start_with?("V7C","V7B")
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...