无法识别'位置'的类型。它将被视为String

时间:2016-05-11 12:49:14

标签: ruby-on-rails database postgresql rubygems postgis

我尝试使用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

srid activerecord-postgis-adapter的一种方法,我试图显示我的地理列(位置)的 srid ,但控制台会保留告诉我Failed to recognize type of 'location'. It will be treated as String.

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

使用public void ConfigureServices(IServiceCollection services) { services.AddDbContext<DataAccess.XXXXContext>(options => options.UseMySQL(Configuration["ConnectionStrings:DefaultConnection"])); services.AddTransient<DataAccess.XXXXContext>(); }

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

require 'activerecord-postgis-adapter'中,更改适配器:

project_name/config/database.yml

变为

 default: &default
  adapter: postgresql

3)确保您已启用postgis扩展程序   default: &default adapter: postgis

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

注意:如果您使用的是RGeo gem,则可能还需要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"