13

Ich führe gerade eine Rails-Migration durch, in der ich einen spezifischen Datentyp für Postgres, den tsvector, hinzufüge. Es enthält Suchinformationen in der von Postgres für seine integrierten Textsuchfunktionen erwarteten Form.Rails-Migrationen mit datenbankspezifischen Datentypen

Das ist die Linie von meiner Migration:

t.column "search_vectors", :tsvector 

Alles scheint gut zu funktionieren, und die Suche funktioniert mit ihm. Allerdings, wenn ich bis schema.rb geöffnet, das ist, was ich habe:

Could not dump table "users" because of following StandardError 
Unknown type 'tsvector' for column 'search_vectors' 

Dies hindert mich an der Ausführung von Unit-Tests für die Benutzertabelle und auch scheint mir wirklich gefährlich gegeben suchen, die schema.rb soll die maßgebliche Definition meiner Datenbank sein.

Ich bemerke, es gibt eine Reihe von Rails-Plugins, die den gleichen Ansatz der Speicherung des Tsvector verwenden, wie ich erwarten würde, wie tsearchable. Bin ich wirklich nur ohne Test und ohne eine autoritative Definition meiner Datenbank festgefahren?

Antwort

11

FYI für jeden, der über dieser Seite passiert, ich dies behoben dies durch Hinzufügen (eigentlich Kommentar zu meiner Rails config:
config.active_record.schema_format =: sql

1

Haben Sie versucht, den Typ als Zeichenfolge anstelle eines Symbols anzugeben?

t.column "search_vectors", "tsvector" 

Wenn das nicht funktioniert, dann Sie könnte bis zu Datenbank-spezifische SQL fallen müssen:

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

Ändern der Zeichenfolgen hat das Problem nicht behoben. Haben Sie jedoch Ihre Antwort bearbeitet? Ich glaube, Sie hatten zuvor eine Empfehlung, meine Konfiguration zu ändern: config.active_record.schema_format =: sql Dies hat funktioniert. –

+0

Nicht ich. Dieser Rat wurde aus irgendeinem Grund von der Person gelöscht, die ihn gepostet hat (Phil Ross). –