ruby-on-rails - MetaSearch Gem 使用轮胎 Gem 覆盖搜索方法

标签 ruby-on-rails ruby rubygems

我已将全文搜索数据库添加到我现有的 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/

相关文章:

ruby-on-rails - 使用 Ruby 别名扩展 Gem

javascript - 在 ruby​​ 中将输出打印到标准输出时如何使用回调

mysql - 在 rails 中显示关系数据库表中的数据的问题

ruby-on-rails - Rails 插件 - 安装为插件或安装为 Gem

ruby-on-rails - pg_search 正则表达式搜索

ruby-on-rails - Rails 按日期排序查询

css - file.css.scss 和 file.scss 之间的区别(Rails)

ruby - 尝试使用 SecureRandom.random_number ruby​​ 2.0.0 的包含范围

ruby-on-rails - 有人知道在 Amazon S3 上存储 Rails 页面缓存的简单方法吗?

rubygems - 无法安装 pg gem