2012-02-20 60 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")