2012-02-20 5 views
1

Railsで構築された既存のWebアプリケーションに全文検索データベースを追加し、active_admin gemを使用しました。フルテキストデータベースは、弾性検索に基づいて構築され、タイヤの宝石を使用しています。 active_admin gemには、Model.searchメソッドを定義するmetasearch gemの依存性要件があります。MetaSearch GemはTire Gemで検索メソッドを無効にします

問題は、metasearch宝石がタイヤ検索宝石の検索方法を無効にして、タイヤ宝石の検索方法のエイリアスをモデルに戻すことができないということです。私はこれをどのようにすることができるか誰にも分かりますか?

- ソリューション -

アップデート:私は実用的なソリューションを作ってみた

def search_for(*args,&block) 
    tire.__send__(:search, *args, &block) 
end 
+0

このメソッドをどのように正確にTireに追加しましたか? – kjs3

答えて

2

:ソリューションは、セットアップに次のメソッドを追加するための初期化子です。基本的にはsearchの代わりにsearch_forと呼ばれる検索方法を設定する必要があります。

app/helpers内にtire_helper.rbというヘルパーファイルを作成します。

module TireHelper 

    def search_for(*args,&block) 
    tire.__send__(:search, *args, &block) 
    end 

end 

そして、この使用後、タイヤを使用する各モデルについて:

# with a string 
query = Model.search_for('string') 

# or with a block 
query = Model.search_for do 
    #any of the same block stuff that Tire.search provides 
end 
+1

非常に便利です!私はあなたにこれ以上のアップヴォートを与えることができたらいいと思う –

2

それとも:あなたは今、次のような方法であなたのモデル(複数可)に正常に検索することができ

class Model < ActiveRecord::Base 

    extend TireHelper 
    include Tire::Model::Search 
    include Tire::Model::Callbacks 

    mapping do 
    # your mappings 
    end 

end 

をヘルパーなしでMyModel.tire.search("string")を使用できます。

関連する問題