У меня есть следующая область, в которой я работал с необработанным SQL:
class DeliveryZone < ActiveRecord::Base
def self.contains(addressable)
point = addressable.lonlat
where(<<-SQL.squish)
ST_Intersects("delivery_zones"."shape", ST_GeomFromText('#{point}'))
SQL
end
end
Где delivery_zones.shape
— это geography(Polygon,4326)
, а point
— это geography(Point,4326)
для типов PostgreSQL.
В консоли rails это #<RGeo::Geos::CAPIPolygonImpl>
и #<RGeo::Geos::CAPIPointImpl>
соответственно.
Я хочу написать что-то более похожее на
where(arel_table[:shape].st_intersects(point))
... но это дает мне эту ошибку:
Ошибка выполнения: не поддерживается: RGeo::Geos::CAPIPointImpl
Мне бы очень хотелось помочь получить необработанный SQL из моей модели! Кроме того, я новичок в RGeo/PostGIS, поэтому, пожалуйста, не думайте, что я знаю, что делаю. :D