activerecord_postgis_adapter:nil的未定义方法“point”:NilClass

问题

90%肯定这是我的设置错误,但我不能做self.factory并尝试访问lonlat给我一个例外“未定义的方法`点’为nil:NilClass”

我可以

设置lonlat使用:

mfactory = RGeo::ActiveRecord::SpatialFactoryStore.instance.factory(:geo_type => 'point') self.lonlat = mfactory.point(long, lat) self.save 

这给了我db中的0101000020E610000061C3D32B65965DC03657CD7344F64040等值。

我不能用:

 self.lonlat = "POINT(#{long},#{lat})" self.save 

问题

我是否需要在模型中设置特定的内容?

我创建了一个github问题,不太简明但更详细的解释。

RGeos依赖于GEOS。 此错误是RGeos无法加载GEOS的结果。

要检查这是否是问题:

 $ rails c > RGeo::Geos.supported? => false 

要检查是否安装了GEOS:

 geos-config --version 

如果未安装GEOS:

 brew install geos 

如果已安装GEOS,请修复已安装的RGeo:

 $ geos-config --prefix /usr/local/Cellar/geos/3.5.0 $ gem install rgeo -- --with-geos-dir=/usr/local/Cellar/geos/3.5.0 

现在应该正确安装并修复您的错误。 你可以像我们上面那样检查:

 $ rails c > RGeo::Geos.supported? => true 

如果这不起作用,请卸载所有版本的geos和rgeo:

 $ brew uninstall geos $ gem uninstall rgeo 

按照上面的说明重新安装geos和rgeo。 您应该在Gemfile中使用gem’rosso’,在捆绑后,您应该将其视为输出之一:“使用本机扩展安装rgeo 0.4.0”

Interesting Posts