Måske er dette en overkill, men hvis du bruger postgres du kan installere postgis udvidelse til at administrere rumlige data. Derefter i en irb du kan gøre noget som dette:
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))')
Forespørgslen kontrollerer, om punktet er inde i den givne bbox ved hjælp af ST_contains-funktionen
Dette vil returnere:
=> #<PG::Result:0x007fa517fcbe08 @connection=#<PG::Connection:0x007fa5167f8970 @socket_io=nil, @notice_receiver=nil, @notice_processor=nil>>
Så kan du gøre:
result.first
Dette vil returnere:
{"st_contains"=>"t"}
Med dette punkt -0,7265, 44,483 (et punkt uden for bboksen) vil resultatet være:
{"st_contains"=>"f"}
Hvis du ikke ønsker at bruge raw sql, kan du bruge ædelstene til at administrere rumlige data. En meget god er:rgeo . Jeg anbefaler at læse skaberens blog
Brug af rgeo du kan definere attributter for dine modeller med "geotyper" som punkter, polygoner osv. og derefter bruge funktioner som indeholder?
Jeg efterlader dig med en gist med meget grundlæggende instruktioner til at installere postgis med ubuntu.