1
如果Parent
有两个子模型的模型:AChild
和BChild
这样的:计数所有子跨类对象
@parent.a_childs.count = 1
@parent.b_childs.count = 2
有一个现有的方法使得:
@parent.count_all_children = 3
如果Parent
有两个子模型的模型:AChild
和BChild
这样的:计数所有子跨类对象
@parent.a_childs.count = 1
@parent.b_childs.count = 2
有一个现有的方法使得:
@parent.count_all_children = 3
假设Parent
型号has_many
同事AChild
和BChild
,这是任何数量的儿童模型的解决方案。将以下方法放入父模型文件中:
def count_all_children
counts = []
Parent.reflect_on_all_associations(:has_many).each do |assoc|
counts << self.public_send(assoc.name).count
end
counts.sum
end
使用反射并且可能相对较慢。如果你只有这两个孩子的模型和不打算加(M)更多,那么就两者之和:
def count_all_children
self.a_childs.count + self.b_childs.count
end
是孩子多态? – Antonio
你是指什么意思? – james
你可以在'Parent'类中添加一个方法 –