Možná je to přehnané, ale pokud používáte postgres můžete nainstalovat postgis rozšíření pro správu prostorových dat. Poté v irbu můžete udělat něco takového:
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))')
Dotaz kontroluje, zda je bod uvnitř daného bboxu pomocí funkce ST_contains
Toto vrátí:
=> #<PG::Result:0x007fa517fcbe08 @connection=#<PG::Connection:0x007fa5167f8970 @socket_io=nil, @notice_receiver=nil, @notice_processor=nil>>
Pak můžete udělat:
result.first
Toto vrátí:
{"st_contains"=>"t"}
S tímto bodem -0,7265, 44,483 (bod mimo bbox) výsledek bude:
{"st_contains"=>"f"}
Pokud nechcete používat raw sql, můžete ke správě prostorových dat použít gems. Velmi dobrý je:rgeo . Doporučuji přečíst si autorův blog
Pomocí rgeo můžete definovat atributy pro své modely pomocí „geotypů“, jako jsou body, polygony atd., a poté použít funkce jako obsahuje?
Nechám vás s souhrnem s velmi základními pokyny k instalaci postgis s ubuntu.