【问题标题】:MetaSearch Gem overrides the search method with the Tire GemMetaSearch Gem 使用 Tire Gem 覆盖搜索方法
【发布时间】:2012-11-21 04:17:15
【问题描述】:

我已将全文搜索数据库添加到使用 Rails 构建并使用 active_admin gem 的现有 web 应用程序中。全文数据库建立在弹性搜索之上,并使用了轮胎 gem。 active_admin gem 具有定义 Model.search 方法的元搜索 gem 的依赖项要求。

问题是元搜索 gem 覆盖了轮胎搜索 gem 的搜索方法,我似乎无法将轮胎 gem 中的搜索方法别名回模型中。有谁知道我该怎么做?

-- 解决方案--

更新:解决方案是设置一个初始化器来添加以下方法:

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

【问题讨论】:

  • 你是如何将这个方法添加到轮胎的?

标签: ruby-on-rails ruby rubygems


【解决方案1】:

我想出了一个可行的解决方案。基本上,您只需将搜索方法设置为称为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

【讨论】:

  • 非常有用!我希望我能给你一个以上的支持
【解决方案2】:

或者你可以使用MyModel.tire.search("string") 而不需要任何帮助。

【讨论】:

    猜你喜欢
    • 2012-06-10
    • 2013-07-10
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    相关资源
    最近更新 更多