Searchkick:GrandParent has_many Parent - Parent has_many Child

时间:2018-03-12 16:30:24

标签: ruby-on-rails elasticsearch searchkick

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

我有三个模型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

但是,我如何执行搜索以查找GrandParentparents childs contentChild值与搜索查询匹配的记录?

换句话说,如果查询与GrandParent的内容匹配,则应在搜索结果中返回ls *.csv | Rename-Item -NewName {$_.name -replace "Default","VOD"}

1 个答案:

答案 0 :(得分:0)

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