有人在 Rails 3+、Heroku、Pgsql 上运行并使用Maxmind 的 Geoip数据库吗?
在 MySql 上,我能够通过以下方式获得一个简单的查询:
IpToCountry.where('ip_to_countries.ip_number_to >= INET_ATON(?)', '24.24.24.24').order('ip_number_to ASC').limit(1).first
但是,自从转向 Pgsql 以来,我正在尝试找到一种正确查询数据库的方法。到目前为止,我有:
remote_ip_array = '24.24.24.24'.split('.')
remote_ip_number = 16777216*remote_ip_array[0].to_i + 65536*remote_ip_array[1].to_i + 256*remote_ip_array[2].to_i + remote_ip_array[3].to_i
ip_to_country = IpToCountry.where('? >= ip_number_from AND ? <= ip_number_to', remote_ip_number, remote_ip_number).order('ip_number_to ASC').limit(1).first
上述查询的问题是某些 IP 不匹配。例如:37.59.16.123
和108.166.92.235
。
我查看了ip4r但由于我使用的是http://postgres.heroku.com,我可能没有安装它的选项。我向支持团队发送了一封电子邮件以进行验证。
同时,非常感谢任何其他反馈。