Проверка URL Rails 3, исключающая некоторые шаблоны - PullRequest
0 голосов
/ 14 апреля 2011

Можно ли использовать validates_exclusion_of с регулярными выражениями?

Это позволит гарантировать, что URL-адреса, соответствующие этим конкретным шаблонам, не могут быть проверены или вставлены в БД.

Что будетлучший подход для кодирования этого?

Ответы [ 2 ]

2 голосов
/ 14 апреля 2011

Есть несколько способов сделать это в зависимости от обстоятельств.

Во-первых, если мне нужно будет сопоставить некоторые шаблоны, а затем исключить другие, я могу сделать что-то вроде этого:

validates_format_of :url, :with => /swanky pattern/, :unless => :beavis

def beavis
  self.url.match(/beavis/)
end

Или, если вам просто нужно исключить определенные шаблоны

validate :i_hate_beavis

def i_hate_beavis
  errors.add(:url, 'cannot be beavis') if self.url.match(/beavis/)
end

ресурсов: http://apidock.com/rails/ActiveModel/Validations/ClassMethods/validate

0 голосов
/ 14 апреля 2011

Я принял подход Джеффа и реализовал следующее:

validate :url_is_acceptable

URL_BLACKLIST = [
  /http:\/\/www.some-website.com\/.*/,
  /http:\/\/www.other-website.com\/.*/
]

def url_is_acceptable
  URL_BLACKLIST.each do |blacklisted_url|
    if self.url =~ blacklisted_url
      errors.add(:not_acceptable, "is not acceptable")
      return
    end
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...