ruby-on-rails - 轮胎 : Eager loading associations from multiple models

标签 ruby-on-rails search include tire

我在我的应用程序中使用 elasticsearch 进行查询。假设有 2 个模型

Class Topic
   has_many :posts

Class Article
  has_many :comments 

我想对这两个模型进行组合搜索,我的查询如下所示:

Tire.search [Article, Topic], {:load => {:include => [:posts, :comments]}} do |search|
...
end

这是我遇到的问题。我明白了

Association named comments not found

错误。我认为这是因为主题模型没有关联评论,我认为文章模型的帖子也会发生同样的事情。

有什么办法可以解决这个问题吗?我在想也许像

:include => ['topic.posts', 'article.comments']

请帮帮我。

最佳答案

我刚刚根据在 this post 上找到的一些指导解决了一个类似的问题.这个答案说试试这个:

 Tire.search [Article, Topic], {:load => { Article =>{ :include => :comments}, 
                                           Topic => { :include => :posts }
                                         } }  do |search|

在我的例子中,我需要一个来加载嵌套关联,其中我有一个两层深的层次结构,我希望 Tire 急切地加载它。所以我根据我的情况调整了该解决方案:

Tire.search 'articles', {:load => { :include => [:contributors, 
                                                 :books => [:authors]] } } do

希望这对您有所帮助。

关于ruby-on-rails - 轮胎 : Eager loading associations from multiple models,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20612422/

相关文章:

ruby-on-rails - Ruby 中的 ->() { } 是什么?

ruby - Thinking_Sphinx 搜索选项

asp.net-mvc - CSS 包含在 MVC 中

algorithm - 硬编码深度优先搜索结果(或优化?)

c - 如何查找大于/小于数组中元素的元素数?

PHP 在其他类中包含类

include - Jekyll,在 html 中包含带有布局的 Markdown

ruby-on-rails - rails : How to create a new entry in the join table

ruby-on-rails - rails 4 -- 连接 collection_select 中的字段

ruby-on-rails - rails : Install and configure bootstrap on rails 6