проверка формата не работает. Зачем? - PullRequest
1 голос
/ 08 марта 2011

У меня есть небольшая проблема:

У меня есть это в моей модели:

validates :title, :presence => true, :uniqueness => true, :format => /[A-Z][A-Za-z0-9\-_]*/i

Это в моем контроллере:

  def create
    @page = Page.new params[:page]

    if verify_recaptcha(:model => @page) && @page.save
      redirect_to @page
    else
      render :action => :new
    end
  end

Однако кто-то создал страница с + в заголовке .Как это может случиться?RegEx не так?Я не могу найти проблему.

Ответы [ 2 ]

2 голосов
/ 08 марта 2011

Попробуйте ввести начальные и конечные соответствия в регулярное выражение:

/^[A-Z][A-Za-z0-9\-_]*$/

В противном случае оно все равно будет совпадать, если + находится в начале или в конце.

0 голосов
/ 08 марта 2011

Ник понимает это почти правильно, вместо передачи: format в validates_presence_of, вам нужно добавить еще один валидатор:

validates_format_of :title, :with => /[A-Z][A-Za-z0-9\-_]*/i

Кроме того, я бы немного сократил это регулярное выражение:

/[A-Z][\w\-_]*/i

Вы можете использовать http://rubular.com, чтобы проверить, дает ли ваше регулярное выражение ожидаемый результат.

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