【问题标题】:Searchkick : GrandParent has_many Parent - Parent has_many ChildSearchkick : GrandParent has_many Parent - Parent has_many Child
【发布时间】:2018-03-13 01:36:13
【问题描述】:

我正在使用 searchkick gem 在 Ruby on Rails 应用程序中进行搜索。

比如说,我有三个模型 GrandParentParentChild 其中:

class Parent < ApplicationRecord
    has_many :childs

class GrandParent < ApplicationRecord
    has_many :parents

比如说,Parent 的值是 name。而Child 的值是content

当我尝试在 GrandParent 中查找与搜索查询匹配的 parentsname 的记录时,我可以使用以下内容:

searchkick

def search_data
    {
        parents: parents.map(&:name).join(' '),
    }
end

但是,我如何执行搜索以查找 GrandParent 中具有 parentschildscontent 值与搜索查询匹配的记录?

换句话说,如果查询与 Child 的内容匹配,则应在搜索结果中返回 GrandParent

【问题讨论】:

    标签: ruby-on-rails elasticsearch searchkick


    【解决方案1】:

    我通过将以下内容添加到 GrandParent 模型来完成它:

    searchkick
    
    def search_data
        {
            parents: parents.map(&:name).join(' '),
            childs: get_childs_contents.join(' ')
        }
    end
    
    def get_childs_contents
        a = []
        parents.each do |p|
            p.childs.each do |c|
                a << c.content
            end
        end
        return a
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-23
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 2018-03-12
      • 2014-04-05
      • 1970-01-01
      • 2018-01-02
      相关资源
      最近更新 更多