Подтвердить что ты не робот

Rails: как проверить формат, только если значение присутствует?

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

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

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."
}

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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