Rails 3验证IPv4和IPv6格式

use*_*324 6 regex validation ruby-on-rails 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"}
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

小智 15

您还可以将它们与Regexp.union:

:format => { :with => Regexp.union(Resolv::IPv4::Regex, Resolv::IPv6::Regex) ...
Run Code Online (Sandbox Code Playgroud)