我尝试使用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.
。
答案 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"
。