Rails: Как проверить формат только при наличии значения? - PullRequest
29 голосов
/ 06 января 2012

Я хотел бы проверить формат значения формы, допустив пустое значение или требуя определенного формата.

Чтобы проверить значение по формату, это прекрасно работает:

validates :application_bundle_identifier, :format => {
  :with => /^[a-zA-Z0-9.-]+$/,
  :message => "A bundle identifier should contain only alphanumeric (A-Z,a-z,0-9), hyphen (-), and period (.) characters."
}

Теперь я бы хотел, чтобы пользователи вообще не вводили значение. В этом случае я мог бы настроить регулярное выражение на ^[a-zA-Z0-9.-]*$, но это не очень хороший Rails-способ. В зависимости от формата это может быть невозможно или, по крайней мере, менее понятно.

Какова лучшая практика в этом случае?

Ответы [ 2 ]

65 голосов
/ 06 января 2012

Вы можете использовать опцию :allow_blank => true, чтобы пропустить проверку, когда атрибут пуст / пуст / ноль.

0 голосов
/ 06 января 2012

Добавить unless nil? || blank?, который должен пропустить проверку, если она пустая (пустая) или nil, я считаю.

См. Последний пример кода на этой странице .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...