我已将全文搜索数据库添加到我现有的 Web 应用程序中,该应用程序是使用 Rails 构建的并使用 active_admin gem。全文数据库建立在 Elasticsearch 之上,并使用 Tire gem。 active_admin gem 具有定义 Model.search 方法的元搜索 gem 的依赖项要求。
问题是元搜索 gem 覆盖了轮胎搜索 gem 的搜索方法,我似乎无法将轮胎 gem 中的搜索方法别名返回到模型中。有谁知道我该怎么做?
-- 解决方案 --
更新:解决方案是设置一个初始化程序以添加以下方法:
def search_for(*args,&block)
tire.__send__(:search, *args, &block)
end
最佳答案
我想出了一个可行的解决方案。基本上,您只需将搜索方法设置为 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
您现在可以使用以下方法在您的模型上正常搜索:
# 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
关于ruby-on-rails - MetaSearch Gem 使用轮胎 Gem 覆盖搜索方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9356240/