Ruby on rails RGeo包含什么?论模式

Ruby on rails RGeo包含什么?论模式,ruby-on-rails,rgeo,Ruby On Rails,Rgeo,我需要找到类Place的所有实例,其中其polygon属性包含提供的点,如in Place.for_pointpt ==已添加==== 好的,我可以执行此查询,但结果错误: Place.all.where("ST_Contains(poly, ST_Point(#{up_pt.join(',')}))") Place Load (0.5ms) SELECT "places".* FROM "places" WHERE (ST_Contains(poly, ST_Point(25.1,25.0

我需要找到类Place的所有实例,其中其polygon属性包含提供的点,如in Place.for_pointpt

==已添加====

好的,我可以执行此查询,但结果错误:

Place.all.where("ST_Contains(poly, ST_Point(#{up_pt.join(',')}))")
Place Load (0.5ms)  SELECT  "places".* FROM "places" WHERE (ST_Contains(poly, ST_Point(25.1,25.09999999999999))) LIMIT $1  [["LIMIT", 11]]
=> #<ActiveRecord::Relation []>
结束


我的rails非常生锈,但我无法查询类Place work….

根据Taryn的请求,下面是一个函数实例方法,它返回一个二进制响应,以确定当前对象的:poly属性是否包含点

def contains? pt
    self[:poly].contains?(pt)
end
显然微不足道。我遇到的问题是,当使用一个类方法来查看哪个实例的poly属性包含该点时,我就不知所措了

def self.for_point pt
    where([:poly].contains?(pt))
end
这只是最后一次,简化的,绝望的尝试。显然,需要做的是每个对象都必须有一个实例方法调用它,但这基本上是一个Ruby循环,这样做似乎很疯狂,遍历一个可能有数百万条目的表

我不能完全理解示例中显示的基于sql的语法,但无论如何,实例方法是纯Ruby的,我问自己,为什么我需要在类查询中使用sql?还是我


另外:我以前在没有RGeo gem的情况下编写了这样的代码,所以我检查了边界框,这很容易做到,因为所有这些查询都将基于矩形区域,基于具有垂直和水平边界的区域。但是我使用gem是有原因的,为了避免我必须维护的许多函数和黑客行为…

def的主体包含了什么??如果我们不知道它是如何工作的,我们如何帮助您将其转换为查询;我不是在挑剔,但我不确定一个不起作用的方法的内部机制是否会很有帮助。。。我明白你说的话,我可以稍后把它贴在电脑上,而不是现在把代码贴在电脑上。但目标是明确的:根据争论的点,找到包含对象的多边形…足够公平-我没有意识到这是一个如此简单的方法:D
def contains? pt
    self[:poly].contains?(pt)
end
def self.for_point pt
    where([:poly].contains?(pt))
end