使用validates_url可以验证网址格式。
在模型中设置验证:
validates :homepage, uniqueness: true, url: true
无法将这两种情况验证为唯一网址:
但他们应该是一样的。如果第一个插入数据库,则应验证第二个,不允许插入。
我没有找到使用validates_url
实现它的方法。有可能吗?
答案 0 :(得分:2)
因此,两个验证,唯一性和URL分开发生,并且唯一性检查中没有任何内容可以处理这两个URL基本相同的事实 - 相反,字符串值在技术上是不同的,因此它不会&# 39;跳过唯一性验证。
您可以做的是在验证之前整理您的网址数据,并在模型中使用before_validation
回调:
before_validation :process_url
def process_url
self.homepage = self.homepage.slice(0, self.homepage.length - 1) if self.homepage.present? && self.homepage.ends_with?("/")
end
在验证启动之前调用此函数,并确保如果主页属性存在(即使稍后添加状态验证,如果它变为非可选,请记住这在验证之前运行),然后是任何尾随/
已被删除。
整理完后,这两个URL字符串将是相同的,因此第二次验证将启动并停止保存。
希望有所帮助!
答案 1 :(得分:1)
我使用rubular.com来验证使用正则表达式。您可以尝试此^[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\.*)?$