Searchkick : GrandParent has_many Parent - Parent has_many Child

Searchkick : GrandParent has_many Parent - Parent has_many Child

我正在使用 searchkick gem.

在 Rails 应用程序的 Ruby 中进行搜索

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

class Parent < ApplicationRecord
    has_many :childs

class GrandParent < ApplicationRecord
    has_many :parents

比如说,Parent 有一个值 nameChild 的值为 content

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

searchkick

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

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

也就是说,如果查询匹配到Child的内容,那么在搜索结果中应该返回GrandParent

我通过将以下内容添加到 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