1

我正在寻找一种方法来验证 Rails 模型中正确 URL 或 IP 地址的字段。我玩过validates :url, :format => URI::regexp(%w(http https)), 和其他 URL 验证。但是如何使用 URL 或 IP 地址验证该字段?也许有一个宝石。

谢谢!

4

1 回答 1

2

不确定是否有这样的 gem,但是可以相对简单地实现自定义验证(ipaddress在 Gemfile 中使用 gem)。尝试类似的东西

require 'uri'
validate :valid_url_or_ip
...
private
def valid_url_or_ip
  unless valid_url?(url) || IPAddress.valid?(url)
    errors.add(:url, "Not an URL or IP address")
  end
end

def valid_url?
  uri = URI.parse(url)
  uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)
rescue URI::InvalidURIError
  false
end
于 2013-02-17T15:11:20.513 回答