13

我目前正在运行 Rails 迁移,我正在添加特定于 Postgres 的数据类型,即 tsvector。它以 Postgres 对其内置文本搜索功能所期望的形式保存搜索信息。

这是我的迁移中的一行:

t.column "search_vectors", :tsvector

一切似乎都运行良好,搜索也能正常工作。然而,当我打开 schema.rb 时,我得到了:

Could not dump table "users" because of following StandardError
Unknown type 'tsvector' for column 'search_vectors'

这使我无法在用户表上运行单元测试,并且考虑到 schema.rb 应该是我的数据库的权威定义,这也让我觉得看起来非常危险。

我注意到有许多 Rails 插件似乎使用与我期望的相同的方法来存储 tsvector,例如 tsearchable。我真的只是在没有测试并且没有对我的数据库的权威定义的情况下陷入困境吗?

4

2 回答 2

13

仅供在此页面上发生的任何人参考,我通过将其添加(实际上取消注释它)到我的 Rails 配置来解决此问题:
config.active_record.schema_format = :sql

于 2010-03-04T23:40:24.830 回答
1

您是否尝试过将类型指定为字符串而不是符号?

t.column "search_vectors", "tsvector"

如果这不起作用,那么您可能需要下拉到特定于数据库的 SQL:

def self.up
  execute "--Put your PostgreSQL specific SQL statements here"
end
于 2010-03-02T09:11:44.807 回答