1

多年来,我一直在Geocoder的帮助下确定用户位置,查找 IPv4 地址。通过射击

request.location,我确定了位置,如果国家是多语言的,我查找浏览器语言设置来设置合适的语言。当我向 Rails 应用程序提供 IPv6 地址时,IP 地址返回 :::1,这不是很有帮助。

不幸的是,IPv6 在确定访问者位置时提出了挑战。是否有任何经过验证的方法可以在 Ruby-on-Rails 上使用 IPv6?

我已经通过互联网搜索了我的方式,但没有遇到特定的解决方案。

4

1 回答 1

1

您可以使用ipaddr库来执行此操作。它支持ipv4ipv6

$ require 'ipaddr'
$ ipaddr = IPAddr.new "3ffe:505:2::1"
$ p ipaddr                   
#=> #<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0001/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>
$ p ipaddr.to_s              
#=> "3ffe:505:2::1"

如果您想要更高级的功能,请尝试ipaddress也支持ipv6.

您可以使用Geocoder.search()ipv6地址搜索:

Geocoder.search(ipaddr)
Geocoder.search('2607:fea8:1360:f7d:dce7:b7f0:e0b6:1014')
于 2020-05-02T20:31:11.920 回答