13

Aktualnie przeprowadzam migrację Railsów, w której dodaję typ danych specyficzny dla Postgres, tsvector. Przechowuje informacje wyszukiwania w formie oczekiwanej przez Postgresa ze względu na wbudowane funkcje wyszukiwania tekstu.Migracja railsów przy użyciu typów danych specyficznych dla bazy danych

Jest to wiersz z mojego migracji:

t.column "search_vectors", :tsvector 

Wszystko wydaje się działać dobrze, a wyszukiwarka działa z nim. Jednak, kiedy otworzyły się schema.rb, to co mam:

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

ta jest zapobieganie mnie od uruchamiania testów jednostkowych w tabeli użytkowników, a także wydaje mi się naprawdę niebezpieczne patrząc Zważywszy, że schema.rb ma być autorytatywną definicją mojej bazy danych.

Zauważam, że istnieje wiele wtyczek Railsowych, które zdają się używać tego samego podejścia do przechowywania tsvector, jak można się spodziewać, na przykład do przeszukiwania. Czy naprawdę utknąłem bez testowania i bez autorytatywnej definicji mojej bazy danych?

Odpowiedz

11

FYI dla każdego, kto się w całej tej stronie Naprawiłem to dodając ten (właściwie odkomentuj go) do mojej konfiguracji Railsów:
config.active_record.schema_format =: sql

1

Czy próbowałeś podać typ jako ciąg zamiast symbolu?

t.column "search_vectors", "tsvector" 

Jeśli to nie poskutkuje, to może trzeba spadać w dół do bazy danych specyficznych dla SQL:

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

Zmiana na ciągi nie rozwiązała problemu. Czy jednak edytowałeś swoją odpowiedź? Myślę, że poprzednio miałeś zalecenie, aby zmienić moją konfigurację na: config.active_record.schema_format =: sql To zadziałało. –

+0

Nie ja. Ta rada została usunięta przez osobę, która ją opublikowała (Phil Ross) z jakiegoś powodu. –