0

我有一个Rails应用程序,我希望全文搜索到我的弹性搜索服务器。我的Elasticsearch服务器运行时没有问题,我可以使用curl对它进行全文搜索。Rails Elasticsearch“[PROXY]未定义方法`model_name'”

但是,我遇到'elasticsearch-model''elasticsearch-rails'问题。随着我的模型,例如:

require 'elasticsearch/model' 

class ConfigTextSearch 
    include Elasticsearch::Model 
end 

ConfigTextSearch.import 

我得到:

NoMethodError (undefined method `model_name' for [PROXY] ConfigTextSearch:Elasticsearch::Model::Proxy::ClassMethodsProxy): 
    app/models/config_text_search.rb:7:in `<top (required)>' 
    app/controllers/devices_controller.rb:73:in `config_text_search' 
    app/metal/status.rb:18:in `call' 

当我通过应用程序或如果做一个查询我进入轨道控制台,并尝试inspect(ConfigTextSearch)

我尝试在我的模型中使用class ConfigTextSearch < ActiveRecord::Base ...思考也许遗漏的方法可能会继承,但后来我得到NameError: uninitialized constant ActiveRecord

任何想法如何解决这个弹性搜索轨插入undefined method 'model_name'

更新:这里是控制器以及如何做一个搜索:

def config_text_search 
    if params[:device_id].nil? 
     @devices_with_config = [] 
    else 
     @devices_with_config = ConfigTextSearch.search params[:device_id]) 
    end 
    end 
+1

嗨。你是如何解决这个问题的?我正面临类似的问题。 –

+0

雅,我得到它的工作,但我不记得如何,虽然....很久以前。抱歉。它是可以修复的。 – dman

+0

我的问题是,我看到相同的错误消息与请求规范,从我的一个控制器实现elasticsearch方法。 –

回答

3

的elasticsearch模型宝石期待的东西,看起来像一个ActiveRecord对象,使得很多的假设有关其纳入对象。

您可以沿着使用ActiveModel的路径在您使用的对象中包含必要的功能,但我不确定您是否按照预期的方式使用它。

通常你有一个模型,比如一个用户,它继承自ActiveRecord :: Base。 elasticsearch-model gem使得可搜索的假设很多关于底层对象。

ConfigTextSearch听起来不像你正在搜索的东西 - 你可能有一个你正在搜索的配置。如果是这样的话,你会在Config中包含弹性搜索模型,然后你可以Config.search('任何你想搜索')

相关问题