无法识别"位置"的类型。它将被视为字符串



我正在尝试使用gem activerecord-postgis-adapter,当我尝试执行以下代码时:

require 'active-record' 
require 'pg'
require 'active record-postgis-adapter'
class Place < ActiveRecord::Base
   record = Place.find(1)
   line = record.location
   puts line.srid
end

sridactiverecord-postgis-adapter的一种方法,在这里我试图显示我的地理列(位置)的srid

可能找到了我的问题的解决方案,我在连接数据库时使用postgresql作为适配器,我改为postgis,现在它可以工作了。

1)您的示例在"活动记录"中有一个空格。

使用require 'activerecord-postgis-adapter'

2) 如其他答案中所述:将postgresql更改为postgis:

project_name/config/database.yml中,更改适配器:

 default: &default
  adapter: postgresql

成为

 default: &default
  adapter: postgis

3) 请确保已启用postgis扩展psql -d your_project_name_development -tAc "SELECT 1 from pg_extension where extname='postgis'" | grep -q 1 || psql -d your_project_name_development --command="CREATE EXTENSION postgis"

此外,在我的项目中,我必须重新导入数据。

注意:如果您使用RGeo-gem,您可能还需要require 'rgeo-activerecord'

最新更新