2011-08-13 1 views
0

レールに変換するIきは、このSQL文が

SELECT * FROM geo_blocks 
WHERE index_geo = INET_ATON("92.229.175.253")-(INET_ATON("92.229.175.253")%65536) 
AND INET_ATON("92.229.175.253") 
BETWEEN ip_start AND ip_end; 

がどのように私はこのようなもので、レールの形式にこれを変換します次のSQL文?

geodata = GeoBlocks.where(.......) 

編集

これは、私が最後にやってしまったものです。

require 'ipaddr' 
ip = IPAddr.new("92.229.175.253") 
geodata = GeoBlocks.where({:index_geo => (ip.to_i - (ip.to_i%(65536)))}, {:ip_start.lt => ip.to_i, :ip_end.gt => ip.to_i}) 

答えて

0

これは動作するはずです:

geodata = GeoBlocks.where(
    "index_geo = INET_ATON(:ip)-(INET_ATON(:ip)%65536) AND INET_ATON(:ip) BETWEEN :ip_start AND :ip_end", { 
    :ip  => "92.229.175.253", 
    :ip_start => ip_start, 
    :ip_end => ip_end 
    } 
) 
+0

を私にそれがip_start&ip_end文句を言ったように私が望んでいた結果を与えていませんでした上記のコードを使用しました。私は別の解決策に行きました。 –

関連する問題