gpt4 book ai didi

ruby-on-rails - Rails 测试数据库在地理列上获取错误的列类型

转载 作者:行者123 更新时间:2023-11-29 12:22:01 25 4
gpt4 key购买 nike

我们有一个使用 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 在开发和测试中创建不同的数据库模式吗?

最佳答案

您是否尝试删除并重新创建测试数据库,然后再次运行迁移?此外,检查它是否从某个地方的模式重新加载测试数据库,而不是运行迁移。

关于ruby-on-rails - Rails 测试数据库在地理列上获取错误的列类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16681101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com