Може би това е пресилено, но ако използвате postgres можете да инсталирате postgis разширение за управление на пространствени данни. След това в сирб можете да направите нещо подобно:
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))')
Заявката проверява дали точката е в даденото bbox с помощта на функцията ST_contains
Това ще върне:
=> #<PG::Result:0x007fa517fcbe08 @connection=#<PG::Connection:0x007fa5167f8970 @socket_io=nil, @notice_receiver=nil, @notice_processor=nil>>
След това можете да направите:
result.first
Това ще върне:
{"st_contains"=>"t"}
С тази точка -0.7265, 44.483 (точка извън полето b) резултатът ще бъде:
{"st_contains"=>"f"}
Ако не искате да използвате необработен sql, можете да използвате скъпоценни камъни за управление на пространствени данни. Много добър е:rgeo . Препоръчвам да прочетете блога на създателя
Използване на rgeo можете да дефинирате атрибути за вашите модели с "геотипове" като точки, полигони и т.н. и след това да използвате функции като съдържа?
Оставям ви с същност с много основни инструкции за инсталиране на postgis с ubuntu.