ruby-on-rails-3 - Rails 与 postgresql+postgis 几何数据类型不完全兼容

标签 ruby-on-rails-3 postgresql postgis

我使用的是 Rails 3.1,我有 PostGIS geometry 数据类型的表。这些似乎与 rake db:schema:dumprake db:test:clonerake test:* 任务不兼容.这些 rake 任务根本不会处理和实例化包含此数据类型的表。

这个有补丁或者解决方案吗?

最佳答案

有一个解决办法:

首先,您需要一个支持 PostGIS 函数的 PostgreSQL 模板

创建模板数据库:

$ psql -U postgres
> CREATE DATABASE template_postgis WITH TEMPLATE=template1 ENCODING='UTF8';
> \c template_postgis;
> CREATE LANGUAGE plpgsql;

将必要的 PostGIS 函数加载到模板中(我使用的是 Homebrew,因此请找到您的 PostGIS SQL 文件的路径):

$ psql -f /usr/local/share/postgis/postgis.sql template_postgis
$ psql -f /usr/local/share/postgis/spatial_ref_sys.sql template_postgis

设置数据库为模板并授予权限:

$ psql -U postgres template_postgis
> UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template_postgis';
> GRANT ALL ON geometry_columns TO PUBLIC;
> GRANT ALL ON spatial_ref_sys TO PUBLIC;

然后,将 gem 'postgis_adapter' 添加到您的 Gemfile 并运行 bundle。 之后将 template: template_postgis 添加到您的 config/database.yml 中,如下所示:

development:
  adapter: postgresql
  template: template_postgis
  database: postgis_db

而且 - 瞧!欢迎加入!

关于ruby-on-rails-3 - Rails 与 postgresql+postgis 几何数据类型不完全兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8718112/

相关文章:

mysql - 多个数据库的 Django 'geo_db_type' AttributeError

ruby-on-rails - RSpec:测试一组值的 DRY 方法

ruby-on-rails - 邮件中未定义的方法 "to_liquid",但页面中没有

python - celery 任务在 redis 后端连接套接字超时时引发错误

sql - PostgreSQL 错误 : Subquery has too many columns

sql - PostgreSQL:ST_GeomFromText(未知)不存在

ruby-on-rails-3 - 如何让 Maxmind 的 Geoip 数据库与 Postgres + Heroku 一起工作

ruby-on-rails-3 - Rails 控制台——输出查询结果表

postgresql - OpenStreetMap 和 Hadoop

java - 使用 GIS 获取单个点的地理信息