Rails 弹性搜索 "undefined method `model_name' for [PROXY]"
Rails Elasticsearch "undefined method `model_name' for [PROXY]"
我有一个 rails 应用程序,我希望在其中将全文搜索转到我的弹性搜索服务器。我的 Elasticsearch 服务器 运行 没有问题,我可以使用 curl 对其进行全文搜索。
但是,我在使用 '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'
当我通过应用程序进行查询时,或者如果我进入 rails 控制台并尝试 inspect(ConfigTextSearch)
。
我尝试在我的模型中使用 class ConfigTextSearch < ActiveRecord::Base
...我想也许可以继承缺少的方法,但后来我得到 NameError: uninitialized constant ActiveRecord
.
关于如何为弹性搜索 rails 插件解决此 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
elasticsearch-model gem 需要一些看起来像 ActiveRecord 对象的东西,并对包含在其中的对象做出很多假设。
您可以沿着使用 ActiveModel 的路径在您正在使用的对象中包含必要的功能,但我不确定您是否按照预期的方式使用它。
通常你有一个模型,比如一个 User,它继承自 ActiveRecord::Base。 elasticsearch 模型 gem 使搜索变得可搜索 假设 很多关于底层对象的信息。
ConfigTextSearch 听起来不像您正在搜索的东西——您可能有一个正在搜索的配置。如果是这种情况,您将在配置中包含弹性搜索模型,然后您可以 Config.search('whatever you want to search for')
我有一个 rails 应用程序,我希望在其中将全文搜索转到我的弹性搜索服务器。我的 Elasticsearch 服务器 运行 没有问题,我可以使用 curl 对其进行全文搜索。
但是,我在使用 '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'
当我通过应用程序进行查询时,或者如果我进入 rails 控制台并尝试 inspect(ConfigTextSearch)
。
我尝试在我的模型中使用 class ConfigTextSearch < ActiveRecord::Base
...我想也许可以继承缺少的方法,但后来我得到 NameError: uninitialized constant ActiveRecord
.
关于如何为弹性搜索 rails 插件解决此 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
elasticsearch-model gem 需要一些看起来像 ActiveRecord 对象的东西,并对包含在其中的对象做出很多假设。
您可以沿着使用 ActiveModel 的路径在您正在使用的对象中包含必要的功能,但我不确定您是否按照预期的方式使用它。
通常你有一个模型,比如一个 User,它继承自 ActiveRecord::Base。 elasticsearch 模型 gem 使搜索变得可搜索 假设 很多关于底层对象的信息。
ConfigTextSearch 听起来不像您正在搜索的东西——您可能有一个正在搜索的配置。如果是这种情况,您将在配置中包含弹性搜索模型,然后您可以 Config.search('whatever you want to search for')