Searchkick : GrandParent has_many Parent - Parent has_many Child
Searchkick : GrandParent has_many Parent - Parent has_many Child
我正在使用 searchkick gem.
在 Rails 应用程序的 Ruby 中进行搜索
比如说,我有三个模型 GrandParent
、 Parent
和 Child
其中:
class Parent < ApplicationRecord
has_many :childs
和
class GrandParent < ApplicationRecord
has_many :parents
比如说,Parent
有一个值 name
。 Child
的值为 content
当我尝试在 GrandParent
中查找 parents
和 name
与搜索查询匹配的记录时,我可以使用以下内容:
searchkick
def search_data
{
parents: parents.map(&:name).join(' '),
}
end
但是,我如何执行搜索以查找 GrandParent
中的记录,其中 parents
具有 childs
且 content
值与搜索查询匹配?
也就是说,如果查询匹配到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
我正在使用 searchkick gem.
在 Rails 应用程序的 Ruby 中进行搜索比如说,我有三个模型 GrandParent
、 Parent
和 Child
其中:
class Parent < ApplicationRecord
has_many :childs
和
class GrandParent < ApplicationRecord
has_many :parents
比如说,Parent
有一个值 name
。 Child
的值为 content
当我尝试在 GrandParent
中查找 parents
和 name
与搜索查询匹配的记录时,我可以使用以下内容:
searchkick
def search_data
{
parents: parents.map(&:name).join(' '),
}
end
但是,我如何执行搜索以查找 GrandParent
中的记录,其中 parents
具有 childs
且 content
值与搜索查询匹配?
也就是说,如果查询匹配到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