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 に移行してから、db を適切にクエリする方法を見つけようとしています。これまでのところ、私は持っています:
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を使用しているため、これをインストールするオプションがない可能性があります。サポート チームに確認のメールを送信しました。
それまでの間、その他のフィードバックをお待ちしております。