Rails migrations avec des types de données spécifiques à la base
-
23-09-2019 - |
Question
Je suis actuellement une migration Rails où je suis d'ajouter un type de données spécifique à Postgres, le tsvector. Il contient des informations de recherche sous la forme que Postgres attend pour son texte intégré dans les capacités de recherche.
Ceci est la ligne de ma migration:
t.column "search_vectors", :tsvector
Tout semble fonctionner très bien, et la recherche fonctionne avec elle. Cependant, quand j'ai ouvert schema.rb, voilà ce que je suis:
Could not dump table "users" because of following StandardError
Unknown type 'tsvector' for column 'search_vectors'
Ce qui me empêche d'exécuter des tests unitaires sur la table utilisateur, et aussi me semble vraiment dangereux regardant étant donné que le schema.rb est censé être la définition faisant autorité de ma base de données.
Je remarque qu'il ya un certain nombre de plugins Rails qui semblent utiliser la même approche de stockage du tsvector comme j'attendre, comme tsearchable. Suis-je vraiment juste coincé sans essai et sans une définition faisant autorité de ma base de données?
La solution
Pour votre information pour tous ceux qui se dans cette page, je fixe en ajoutant ce (en fait décommentant il) à ma config Rails:
config.active_record.schema_format =: SQL
Autres conseils
Avez-vous essayé de spécifier le type comme une chaîne au lieu d'un symbole?
t.column "search_vectors", "tsvector"
Si cela ne fonctionne pas, alors vous pourriez avoir besoin de descendre à SQL spécifique à la base de données:
def self.up
execute "--Put your PostgreSQL specific SQL statements here"
end