Rails migrações com tipos de dados específicos de banco de dados
-
23-09-2019 - |
Pergunta
Atualmente, estou executando uma migração do Rails, onde estou adicionando um tipo de dados específico ao Postgres, o TSVector. Ele mantém informações de pesquisa no formulário que o PostGres espera por seus recursos de pesquisa de texto interno.
Esta é a linha da minha migração:
t.column "search_vectors", :tsvector
Tudo parece estar funcionando bem, e a pesquisa funciona com ela. No entanto, quando abri o esquema.rb, é isso que eu consegui:
Could not dump table "users" because of following StandardError
Unknown type 'tsvector' for column 'search_vectors'
Isso está me impedindo de executar testes de unidade na tabela de usuários e também me parece com uma aparência realmente perigosa, uma vez que o esquema.rb deveria ser a definição autorizada do meu banco de dados.
Percebo que existem vários plug -ins de trilhos que parecem usar a mesma abordagem de armazenar o TSVector como eu esperaria, como o TSearchable. Estou realmente preso sem testar e sem uma definição autorizada do meu banco de dados?
Solução
Para sua informação, para quem acontece nesta página, corrigi isso adicionando isso (na verdade, descommentando -o) à minha configuração de Rails:
config.active_record.schema_format =: sql
Outras dicas
Você já tentou especificar o tipo como uma string em vez de um símbolo?
t.column "search_vectors", "tsvector"
Se isso não funcionar, talvez seja necessário descer para o SQL específico do banco de dados:
def self.up
execute "--Put your PostgreSQL specific SQL statements here"
end