Rotaie migrazioni con tipi di dati di database specifici
-
23-09-2019 - |
Domanda
Sono attualmente in esecuzione una migrazione Rails in cui sto aggiungendo una specifica tipo di dati a Postgres, il tsvector. Contiene informazioni di ricerca nella forma che Postgres si aspetta per la sua funzionalità integrate di testo di ricerca.
Questa è la linea del mio migrazione:
t.column "search_vectors", :tsvector
Tutto sembra funzionare bene, e la ricerca funziona con esso. Tuttavia, quando ho aperto schema.rb, questo è quello che ho ottenuto:
Could not dump table "users" because of following StandardError
Unknown type 'tsvector' for column 'search_vectors'
Questo mi impedisce di esecuzione test di unità sul tavolo dell'utente, e colpisce anche me come veramente pericoloso che sembra dato che lo schema.rb dovrebbe essere la definizione autorevole della mia base di dati.
ho notato ci sono una serie di Rails plugin che sembrano utilizzare lo stesso approccio di memorizzare il tsvector come mi sarei aspettato, come ad esempio tsearchable. Sono davvero appena attaccato senza prove e senza una definizione ufficiale di mio database?
Soluzione
FYI per chiunque accade attraverso questa pagina, ho risolto questo con l'aggiunta di questo (in realtà decommentando esso) al mio Rails config:
config.active_record.schema_format =: sql
Altri suggerimenti
Hai provato specificando il tipo come una stringa invece di un simbolo?
t.column "search_vectors", "tsvector"
Se questo non dovesse funzionare, allora potrebbe essere necessario scendere fino a database SQL specifica:
def self.up
execute "--Put your PostgreSQL specific SQL statements here"
end