我正在运行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。我真的只是没有测试而没有我的数据库的权威定义吗?
答案 0 :(得分:12)
对于在此页面中发生的任何人,我通过将此(实际上取消注释)添加到我的Rails配置来修复此问题:
config.active_record.schema_format =:sql
答案 1 :(得分:1)
您是否尝试将类型指定为字符串而不是符号?
t.column "search_vectors", "tsvector"
如果这不起作用,那么您可能需要下拉到特定于数据库的SQL:
def self.up
execute "--Put your PostgreSQL specific SQL statements here"
end