我们有一个使用 postgis 和 activerecord-postgis-adapter 进行地理信息搜索的 rails 应用程序。但是,它在测试数据库中无法正常工作。在开发和生产数据库中,地理列的类型为“geography(Point, 4236)”。在测试中,这些相同的列具有“几何”类型。这意味着地理搜索不做球面地理距离......他们只是做简单的笛卡尔几何,这意味着数字通常相差约 100,000。嘘。
这是它在schema.rb中的样子:
create_table "buyers", :force => true do |t|
# snip
t.spatial "geocoded_coordinates", :limit => {:srid=>4326, :type=>"point", :geographic=>true}
end
在 database.yml 中:
development: &development
adapter: postgis
database: lvs_dev
username: postgres
host: "lrd-db"
template: template_postgis
test:
<<: *development
database: lvs_test
数据库中的结果列(通过 psql):
lvs_dev:
lvs_dev=# \d+ buyers
Table "public.buyers"
# snip
geocoded_coordinates | geography(Point,4326) | | main |
lvs_test:
lvs_dev=# \d+ buyers
Table "public.buyers"
# snip
geocoded_coordinates | geometry | | main |
那么......这里给出了什么?任何想法为什么 rails / rake 在开发和测试中创建不同的数据库模式?