2012-02-20 72 views
1

我已經將全文搜索數據庫添加到使用Rails構建的現有web應用程序,並使用active_admin gem。全文數據庫建立在彈性搜索的基礎上,並使用輪胎寶石。 active_admin gem具有定義Model.search方法的元搜索gem的相關性要求。MetaSearch Gem使用輪胎寶石重寫搜索方法

問題是,元搜索寶石覆蓋輪胎搜索寶石的搜索方法,我似乎無法將輪胎寶石中的搜索方法別名回模型。有誰知道我該怎麼做?

- 解決方案 -

更新:解決的辦法是設置一個初始添加下面的方法:我想出一個可行的解決方案

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

您是如何將這種方法添加到Tire的? – kjs3 2012-05-21 21:41:50

回答

2

。基本上,您只需將搜索方法設置爲search_for而不是search

在app/helpers中創建一個名爲tire_helper.rb的助手文件。

module TireHelper 

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

end 

而對於使用輪胎則使用每個模型:

class Model < ActiveRecord::Base 

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

    mapping do 
    # your mappings 
    end 

end 

現在你可以在你的模型(S)以下方法通常搜索:

# 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

非常有用!我希望我能給你一個以上的贊成 – 2012-10-28 00:23:37

2

或者你沒有任何幫手可以使用MyModel.tire.search("string")