Простая проверка формата рельсов, не стрельба - PullRequest
3 голосов
/ 17 февраля 2012

Я создаю приложение, в котором пользователи могут создавать URL-слагы для своего профиля. Чтобы убедиться, что слагы действительны, я добавил проверку в модели User для слагов:

  validates :slug, :uniqueness => true, :format => { :with => /[a-z]+/ }, :allow_nil => true, :allow_blank => true

Однако проверка, похоже, прошла независимо от того, в каком формате находится строка слагов, например:

u.slug = 'jlskdf .jc oi/slkdjfie\*asdf&(*&*ss%&'
=> "jlskdf .jc oi/slkdjfie\\*asdf&(*&*ss%&"
u.save
=> true

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

validates_format_of :slug, :with => /[a-z]+/

, который дает те же результаты. У кого-нибудь есть идеи о том, что может происходить?

1 Ответ

1 голос
/ 17 февраля 2012

Ваше регулярное выражение не привязано, поэтому шаблон соответствует, если он содержит хотя бы одну букву a-z. Все остальное действительно. Добавьте \A и \z в начало и конец, чтобы предотвратить сопоставление любой подстроки в большем вводе.

:with => /\A[a-z]+\z/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...