Rails 3排除某些模式的URL验证

时间:2011-04-14 11:02:59

标签: regex ruby-on-rails-3 validation

是否可以将validates_exclusion_of与正则表达式一起使用?

这将确保匹配这些特定模式的URL无法验证,也无法插入到db。

对此进行编码的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

根据具体情况,我可以通过几种方式进行操作。

首先,如果我必须匹配某些模式然后排除其他模式,我可能会这样做:

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

答案 1 :(得分:0)

我采用了Geoff的方法并实施了以下内容:

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