Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails migrations with database-specific data types

I'm currently running a Rails migration where I am adding a datatype specific to Postgres, the tsvector. It holds search information in the form that Postgres expects for its built-in text searching capabilities.

This is the line from my migration:

t.column "search_vectors", :tsvector

Everything seems to be working fine, and the search works with it. However, when I opened up schema.rb, this is what I got:

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

This is preventing me from running unit tests on the user table, and also strikes me as really dangerous looking given that the schema.rb is supposed to be the authoritative definition of my database.

I notice there are a number of Rails plugins that seem to use the same approach of storing the tsvector like I would expect, such as tsearchable. Am I really just stuck without testing and without an authoritative definition of my database?

like image 282
William Jones Avatar asked Mar 01 '10 22:03

William Jones


1 Answers

FYI for anyone who happens across this page, I fixed this by adding this (actually uncommenting it) to my Rails config:
config.active_record.schema_format = :sql

like image 109
William Jones Avatar answered Sep 20 '22 15:09

William Jones