2011-08-13 5 views
0

j'ai l'instruction SQL suivanteconvertir cette instruction SQL aux rails

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; 

Comment pourrais-je convertir en un format de rails avec quelque chose comme ça?

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

modifier

C'est ce que je fini par faire à la fin.

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}) 

Répondre

0

Cela devrait fonctionner:

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

En utilisant le code ci-dessus ne me donnait pas les résultats que je voulais qu'il se plaignait de ip_start & ip_end. J'ai fini par aller avec une solution différente. –

Questions connexes