我使用的是 Rails 3.1,我有 PostGIS geometry
数据类型的表。这些似乎与 rake db:schema:dump
或 rake db:test:clone
和 rake 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/