Rails migrations with database-specific data types

好久不见. 提交于 2019-11-30 02:08:25

问题


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?


回答1:


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




回答2:


Have you tried specifying the type as a string instead of a symbol?

t.column "search_vectors", "tsvector"

If that doesn't work then you might need to drop down to database-specific SQL:

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


来源:https://stackoverflow.com/questions/2359701/rails-migrations-with-database-specific-data-types

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!