activerecord_postgis_adapter:未定义的方法`point'为零:NilClass

时间:2015-07-01 19:30:01

标签: ruby-on-rails ruby postgis geos rgeo

问题

90%确定这是我的设置错误,但是我无法做到自我。试图访问lonlat给了我一个例外"未定义的方法`point'为零: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

问题

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

1 个答案:

答案 0 :(得分:11)

I created a github issue with a less consise but more detailed explaination.

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”