我有以下查询,用于计算每个家庭每个月向我的代理机构进行的访问次数
visits.by_month(@month).select("DISTINCT(household_id)").count
这将返回每个月访问的家庭数量
但是每个家庭在一个单独的模型中有很多邻居所以:household.neighbors.count给了我家里邻居的数量,但我想要所有家庭的所有邻居
换句话说,我想要计算在特定月份访问的所有家庭的总邻居数及其年龄:
在我的邻居模型中,我有适合我年龄组的范围:
scope :young, where( 'age < 19')
scope :middle, where('age > 18 && age < 66')
scope :old, where('age > 65')
如何按年龄组返回每月访问的邻居数量?:
或:
Jones Household {Bob: 14, Sally: 30, Stan: 80}
Smith Household {Ben: 30, Sue 15}
Total Households 2
Total Neighbors served: 5
Total Young Neighbors: 2
Total Middle Neighbors: 2
Total Old Neighbors: 1
我从这开始,但这是错误的:
visits.by_month(@month).select("DISTINCT(household_id)").each.neighbors.count
关于如何做到这一点的任何想法?
答案 0 :(得分:0)
我不确定我是否完全理解这个问题,但是如何:
# get an array of all distinct household IDs for that month
household_ids = visits.by_month(@month).pluck(:household_id).uniq
household_ids.each do |h_id|
young_count = visits.by_month(@month).where(:household_id=>h_id).young.count
middle_count = visits.by_month(@month).where(:household_id=>h_id).middle.count
old_count = visits.by_month(@month).where(:household_id=>h_id).old.count
puts "Number of young people visiting from household: #{h_id} is #{young_count}"
end
如果这不是您所期望的,那么粘贴一些您的模型代码可能会有所帮助。我不认为我对你期望的结果是100%的。