13

私は現在、Postgres に固有のデータ型である tsvector を追加する Rails 移行を実行しています。組み込みのテキスト検索機能で Postgres が期待する形式で検索情報を保持します。

これは私の移行からの行です:

t.column "search_vectors", :tsvector

すべてが正常に機能しているようで、検索はそれで機能します。ただし、schema.rb を開くと、次のようになりました。

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

これにより、user テーブルで単体テストを実行できなくなります。また、schema.rb がデータベースの正式な定義であると想定されていることを考えると、非常に危険なように見えます。

tsearchable など、期待どおりに tsvector を保存する同じアプローチを使用しているように見える Rails プラグインがいくつかあることに気付きました。テストせず、データベースの正式な定義なしで、本当に立ち往生しているのでしょうか?

4

2 に答える 2

13

参考までに、このページに出くわした人のために、Rails config にこれを追加して (実際にはコメントを解除して) これを修正しました:
config.active_record.schema_format = :sql

于 2010-03-04T23:40:24.830 に答える
1

タイプをシンボルではなく文字列として指定しようとしましたか?

t.column "search_vectors", "tsvector"

それがうまくいかない場合は、データベース固有の SQL にドロップダウンする必要があるかもしれません:

def self.up
  execute "--Put your PostgreSQL specific SQL statements here"
end
于 2010-03-02T09:11:44.807 に答える