我需要找出距离纬度和经度一定距离的用户。
organisation.users.joins(:location)
.where("ST_DWithin(ST_GeomFromText('POINT(locations.longitude locations.latitude)', 4326),ST_GeomFromText('POINT(? ?)', 4326), ?)", longitude, latitude, distance)
.pluck(:id)
我收到此错误ActiveRecord::StatementInvalid: PG::InternalError: ERROR: parse error - invalid geometry
您指的是字符串中的列名,因此使用此字符串而不是预期的坐标。
要解决这个问题,你需要连接text命令('point('
和列值,最后你连接文本命令的结尾(')'
)。结果,列名不再在单引号内。
organisation.users.joins(:location)
.where("ST_DWithin(ST_GeomFromText('POINT(' || locations.longitude || ' ' || locations.latitude ||')', 4326),ST_GeomFromText('POINT(? ?)', 4326), ?)", longitude, latitude, distance)
.pluck(:id)