Rails-миграции с базами данных - PullRequest
13 голосов
/ 02 марта 2010

В настоящее время я выполняю миграцию 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 ]

12 голосов
/ 05 марта 2010

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

1 голос
/ 02 марта 2010

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

t.column "search_vectors", "tsvector"

Если это не сработает, возможно, вам нужно перейти к SQL для конкретной базы данных:

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