如果模型Parent
有两个子模型:AChild
和BChild
,那么:
@parent.a_childs.count = 1
@parent.b_childs.count = 2
是否存在以下方法:
@parent.count_all_children = 3
答案 0 :(得分:0)
假设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