Sta*_*ers 3 postgresql rspec ruby-on-rails
我有一个postgres表,其中包含一个名为shape的多边形列.为了确定一个点是否在我内部运行
select * from areas where shape @> point '(1,1)';
Run Code Online (Sandbox Code Playgroud)
这一切都很好并且在我的ruby on rails app上工作,但它在我的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.
Run Code Online (Sandbox Code Playgroud)
使用数据库工作的所有其他50多个测试,只有这一个保释.它再次适用于代码和控制台.测试环境都已正确设置.
我的问题: - 如何将比较科目投入工作? - 为什么它只会在测试中失败?
默认情况下,activerecord使用schema.rb使测试数据库与开发数据库保持同步.Schema.rb是数据库独立的(它使用与迁移相同的结构),但另一方面是它不支持数据库可能具有的所有花里胡哨,特别是像Postgres这样增加了许多额外的东西.
您可以设置config.active_record.schema_format为:sql使用数据库自己的工具生成.sql文件,rails将丢失而不是schema.rb.您将无法针对不同的数据库运行测试,但如果您使用的是postgres特定的扩展,那么无论如何您都处于该场景中.
另一种可能性是增强活动记录的模式转储器以理解多边形列.外国人gem为schema.rb添加了外键支持
| 归档时间: |
|
| 查看次数: |
506 次 |
| 最近记录: |