13

Je suis actuellement en train d'exécuter une migration Rails où j'ajoute un type de données spécifique à Postgres, le tsvector. Il contient des informations de recherche sous la forme attendue par Postgres pour ses fonctionnalités intégrées de recherche de texte.Migrations de Rails avec types de données spécifiques à la base de données

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' 

Cela me empêche d'exécuter des tests unitaires sur la table utilisateur, et aussi me paraît 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 y a un certain nombre de plugins Rails qui semblent utiliser la même approche pour stocker le tsvector comme je m'y attendais, comme tsearchable. Suis-je vraiment juste coincé sans test et sans une définition faisant autorité de ma base de données?

Répondre

11

Pour votre information pour tous ceux qui se dans cette page, je fixe en ajoutant ce (en fait décommenter) à ma configuration de Rails:
config.active_record.schema_format =: sql

1

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 vous pourriez alors travailler pas besoin de descendre à SQL spécifique à la base:

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

La modification en chaînes n'a pas résolu le problème. Cependant, avez-vous modifié votre réponse? Je pense que vous aviez précédemment recommandé de modifier ma configuration pour: config.active_record.schema_format =: sql Cela a fonctionné. –

+0

Pas moi. Ce conseil a été supprimé par la personne qui l'a posté (Phil Ross) pour une raison quelconque. –

Questions connexes