проверяет формат с помощью регулярного выражения в ruby ​​на рельсах - PullRequest
0 голосов
/ 05 декабря 2011

Мои требования: Добавить проверку, чтобы убедиться, что ключевое слово SITEMAP_URL всегда включено в search_engines.url и должно иметь формат http://www.example.com/

class SearchEngine < ActiveRecord::Base

  validates :name, :ping_url, :uniqueness => true, :presence => true
  validates :ping_url, :format => {:with => /\=SITEMAP_URL$/}, :presence => true

end

Является ли написанная мною проверка правильной.

1 Ответ

2 голосов
/ 05 декабря 2011

Проверка выглядит хорошо.

За исключением случаев, когда вы ожидаете, что /\=SITEMAP_URL$/ интерполировать не будет.

Он будет соответствовать только таким строкам, как;

Это действительно то, что вы имеете в виду?

Если у вас есть

SITEMAP_URL = "/sitemap.xml"

Тогда вы можете сказать

SITEMAP_REGEXP = /\=#{SITEMAP_URL}/

Но это будет интерпретировать "." как любой персонаж.

Так что вам нужно использовать Regexp.escape

В значительной степени

Regexp.new(Regexp.escape("=#{SITEMAP_URL}")+"$")

Должен делать то, что вы хотите.

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