Rails ActiveRecord регулярное выражение проверки необязательных полей - PullRequest
6 голосов
/ 18 марта 2012

Я хотел бы проверить поле с помощью регулярного выражения, а также позволить ему быть пустым (чтобы принять пустую строку).Пока что единственное, что мне удалось - это написать регулярное выражение, которое допускает пустую строку, например:

validates :field,
          format: { with: /\A([a-z]+|)\z/i }

Теперь это не может быть правильным способом - это похоже на уродливый хак.Я хотел бы знать, есть ли другой (правильный) подход?

Ответы [ 2 ]

14 голосов
/ 18 марта 2012

allow_blank должно работать. (Существует также allow_nil только для приема значений nil (не пустой строки))

validates :field,
          format: { with: /\A([a-z]+|)\z/i }, :allow_blank => true
0 голосов
/ 18 марта 2012

Вам не нужно чередование ... вы можете использовать квантификатор '*', чтобы указать «ноль или более» вхождений. Кроме того, я бы использовал '\ w', а не [a-z] ... это поймает буквенно-цифровые символы.

 validates :field,
      format: { with: /\A(\w*)\z/i }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...