gpt4 book ai didi

ruby-on-rails - 测试环境中未启用 Postgresql 扩展

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

我有一个带有名为 shape 的多边形列的 postgres 表。为了确定一个点是否在里面,我运行

select * from areas where shape @> point '(1,1)';

这在我的 ruby​​ on rails 应用程序中一切正常,但在我的 RSpec 测试中失败了。当我查看我的日志时,我发现这个错误是源头

 PGError: ERROR:  operator does not exist: character varying @> point
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.

所有其他 50 多个使用数据库的测试都有效,只有这个成功。它再次在代码和控制台中运行。测试环境都已正确设置。

我的问题:- 我怎样才能使比较对象发挥作用?- 为什么它只会在测试中失败?

最佳答案

默认情况下,activerecord 使用 schema.rb 来保持测试数据库与开发数据库同步。 Schema.rb 是独立于数据库的(它使用与迁移相同的结构)但不利的一面是它不倾向于支持数据库可能具有的所有附加功能,尤其是像 Postgres 这样添加了很多额外内容的数据库。

您可以将 config.active_record.schema_format 设置为 :sql 而不是使用数据库自​​己的工具生成 .sql 文件,rails 将丢失该文件而不是模式。 rb。您将失去针对不同数据库运行测试的能力,但如果您使用的是 postgres 特定扩展,那么无论如何您都会遇到这种情况。

另一种可能性是增强事件记录的模式转储程序以理解多边形列。 foreigner gem 为 schema.rb 添加外键支持例如

关于ruby-on-rails - 测试环境中未启用 Postgresql 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12719774/

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