ruby-on-rails - 如何在 ElasticSearch 中使用 Active Record 关联?

标签 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

我可以在我的 Controller 中查询 Elasticsearch ,如下所示:
@documents = Document.search params[:q]

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

我收到以下错误:
undefined method `authentication' for #<Elasticsearch::Model::Response::Result:0x007fd07929f5a8>

我怎样才能完成这项工作,或者有更好的方法来处理这种需求?

最佳答案

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

请尝试@documents.results@documents.records在调用 first 之前.
所以试试@documents.records.first.authentications.name .

关于ruby-on-rails - 如何在 ElasticSearch 中使用 Active Record 关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38133328/

相关文章:

ruby - Eclipse 仍然认为我安装了 RVM,但我没有

amazon-web-services - 通过堡垒主机将 ssh 端口转发到 VPC 中的 Elasticsearch 集群无法正常工作

java - 当我们在tomcat服务器中替换为新的PKI时,SSL证书错误

javascript - 在私有(private) channel 上发送 Pusher 事件

ruby-on-rails - Rails/Rspec JSON 整数在测试后调用时被转换为字符串

ruby-on-rails - best_in_place 更新后保留原始值

python - 如何在 Elasticsearch 中启用滚动功能

ruby-on-rails - Rspec - 查看测试和 html_safe

Ruby 无法加载此类文件 --ftools(加载错误)

ruby-on-rails - Rails/RSpec 为什么我不能将缩短的 "its(:attribute)"与 Rails 模型关联一起使用?