如何使用ElasticSearch的Active Record Associations?

时间:2016-06-30 21:10:50

标签: ruby-on-rails ruby elasticsearch activemodel

我有以下型号:

class Document < ActiveRecord::Base
  include Elasticsearch::Model
  include Elasticsearch::Model::Callbacks

  belongs_to :user
  belongs_to :authentication


class Authentication < ActiveRecord::Base
  belongs_to :user
  has_many :documents

我可以在控制器中查询弹性搜索,如下所示:

@documents = Document.search params[:q]

@documents已正确填充,但我不能再像这样使用ActiveRecord关联:

@documents.first.authentications.name

我收到以下错误:

undefined method `authentication' for #<Elasticsearch::Model::Response::Result:0x007fd07929f5a8>

关于如何使这项工作或有更好的方法来处理这种需求的任何想法?

由于

1 个答案:

答案 0 :(得分:1)

我认为你在调用@documents.first.authentications.name时有错字。请注意,您有一个关联belongs_to :authentication

请在致电@documents.results之前尝试@documents.recordsfirst。 所以试试@documents.records.first.authentications.name