2011-04-14 79 views

回答

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

+0

我选择了您的解决方案并对其进行了调整。很棒。 – 2011-04-14 12:11:21

0

我采取了杰夫的方法,并执行以下操作:

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