Перенос Rails с типами данных, специфичными для базы данных

В настоящее время я запускаю миграцию 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. Я действительно просто застрял без тестирования и без авторитетного определения моей базы данных?

Ответы

Ответ 1

FYI для всех, кто попадает на эту страницу, я исправил это, добавив это (фактически раскомментируя его) в мою конфигурацию Rails:
config.active_record.schema_format =: sql

Ответ 2

Вы пытались указать тип как строку вместо символа?

t.column "search_vectors", "tsvector"

Если это не сработает, вам может потребоваться свернуть к SQL-специфическому SQL-адресу:

def self.up
  execute "--Put your PostgreSQL specific SQL statements here"
end