使用特定于数据库的数据类型进行Rails迁移

时间:2010-03-01 22:49:32

标签: ruby-on-rails postgresql migration tsvector custom-data-type

我正在运行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。我真的只是没有测试而没有我的数据库的权威定义吗?

2 个答案:

答案 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