Rails 3 验证 IPv4 和 IPv6 格式

6

我知道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格式不正确时才会失败。
谢谢。
2个回答

15

您还可以使用 Regexp.union 将它们组合起来:

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

0
你可以做:
:format => { :with => Resolv::AddressRegex ...

...以适配IPv4和IPv6。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接