Tal vez esto sea una exageración, pero si está usando postgres puede instalar postgis extensión para gestionar datos espaciales. Luego en un irb puedes hacer algo como esto:
result = ActiveRecord::Base.connection.execute('SELECT
ST_Contains(ST_SetSRID(ST_MakeBox2D(ST_Point(-0.489, 51.28), ST_Point(0.236, 51.686)), 4326),
ST_SetSRID(ST_Point(-0.1265, 51.483), 4326))')
La consulta verifica si el punto está dentro del bbox dado usando la función ST_contains
Esto devolverá:
=> #<PG::Result:0x007fa517fcbe08 @connection=#<PG::Connection:0x007fa5167f8970 @socket_io=nil, @notice_receiver=nil, @notice_processor=nil>>
Entonces puedes hacer:
result.first
Esto devolverá:
{"st_contains"=>"t"}
Con este punto -0.7265, 44.483 (un punto fuera del bbox) el resultado será:
{"st_contains"=>"f"}
Si no desea usar sql sin procesar, puede usar gemas para administrar datos espaciales. Una muy buena es:rgeo . Recomiendo leer el blog del creador.
Usando rgeo puede definir atributos para sus modelos con "geotipos" como puntos, polígonos, etc. y luego usar funciones como ¿contiene?
Los dejo con un gist con instrucciones muy básicas para instalar postgis con ubuntu.