Rails 3验证IPv4和IPv6格式

时间:2013-06-06 15:08:03

标签: ruby-on-rails regex validation ip-address

我知道IPv4和IPv6的验证格式。但不确定如何将它们组合在一起,因此至少有一种格式应该是真的。这是我的验证

validates :src_ip_addr, :presence => true, :uniqueness => true,
            :format => { :with => Resolv::IPv4::Regex, :message => "Not an valid IPv4 format"}

  validates :src_ip_addr, :presence => true, :uniqueness => true,
            :format => { :with => Resolv::IPv6::Regex, :message => "Not an valid IPv6 format"}

如何将它们组合起来如果一种格式正确则验证应该有效。仅当ipv4和ipv6格式不正确时才会失败。

感谢。

1 个答案:

答案 0 :(得分:13)

您还可以将它们与Regexp.union结合使用:

:format => { :with => Regexp.union(Resolv::IPv4::Regex, Resolv::IPv6::Regex) ...