13

我目前正在運行Rails遷移,其中我正在添加特定於Postgres的tsvector的數據類型。它以Postgres期望的內置文本搜索功能的形式保存搜索信息。使用特定於數據庫的數據類型進行Rails遷移

這是我的移民行:

t.column "search_vectors", :tsvector 

似乎一切都工作正常,並用它來搜索的工作。然而,當我打開了schema.rb,這是我得到了什麼:

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

這是阻止我的用戶表運行單元測試,也令我真的很危險面色鑑於schema.rb應該是我數據庫的權威定義。

我注意到有一些Rails插件似乎使用了像我所期望的那樣存儲tsvector的方法,例如tsearchable。我真的只是堅持沒有測試,沒有我的數據庫的權威定義?

回答

11

FYI的人誰碰到這個頁面會發生,我加入這個解決了這個問題(其實取消註釋)到我的Rails配置:
config.active_record.schema_format =:sql

1

您是否試過將字符串指定爲字符串而不是符號?

t.column "search_vectors", "tsvector" 

如果不工作,那麼你可能需要下降到特定數據庫的SQL:

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

更改爲字符串不能解決問題。 但是,您是否編輯了您的回覆?我想你以前有建議將我的配置更改爲: config.active_record.schema_format =:sql 這確實奏效。 – 2010-03-02 22:12:43

+0

不是我。發佈它的人(菲爾羅斯)出於某種原因刪除了該建議。 – 2010-03-03 07:18:05