我们假设我有grandparent
个文档,其中包含许多parents
,每个parent
都有children
个。
在使用Mongoid的Rails中,最好的方法是在没有循环的情况下获取特定children
的所有grandparent
?
例如,如果我使用循环,它看起来像这样(粗略代码):
def children
children = []
parents.each do |p|
p.children.each do |c|
children << c
end
end
children.uniq
end
class Grandparent
include Mongoid::Document
has_many :parents
end
class Parent
include Mongoid::Document
belongs_to :grandparent
has_many :children
end
class Child
include Mongoid::Document
belongs_to :parent
end
答案 0 :(得分:0)
像这样的方法,它会在调用后加载children
作为属性。
def children(reload=false)
@children = nil if reload
@children ||= Child.where(:parent_id.in => parents.map(&:id))
end
请同时查看此SO answer