我正在编写一份报告,计算一个家庭中的邻居 - 我正在考虑使用辅助方法,简单查询或两者兼而有之
家庭是一个拥有多个邻居的对象,我想计算一组选定家庭中的邻居总数。我有一系列住户ID:
@household_ids = [31, 15, 30, 38, 1, 5, 32, 25, 10, 26, 14,29]
我试过了:
def household_neighbor_count(houses)
houses.each do |id|
@neigh = Household.find(id).neighbor_count
@neigh
end
end
哪个不起作用 - 它会返回ID列表
因为这是Rails我也可以做一个activerecord查询,这是我在伪sql中的镜头:
Neighbors where household_id == household_id in @household-ids
如果有帮助,我正在使用squeel
我如何做到这一点 - 方法很好或者推荐最好的方法很好
答案 0 :(得分:0)
假设邻居模型中有household_id
@household_ids = [31, 15, 30, 38, 1, 5, 32, 25, 10, 26, 14,29]
total_number_of_neighbors = Neighbor.where('household_id IN (?)', @household_ids).count
答案 1 :(得分:0)
目前还不清楚你要做什么,但我想这就是你想要的:
houses.map{|id| Household.find(id).neighbor_count}.inject(:+)
如果房屋中的邻居之间存在重复,那么您需要一种方法来获取给定房屋的邻居集合,而不仅仅是计数。而且由于你没有展示这种方法,我想这不是问题,或者你的问题不合适。
答案 2 :(得分:0)
试试这个
Household.includes(:neighbors).select('households.id, neighbors.id').where(:id => [31, 15, 30, 38, 1, 5, 32, 25, 10, 26, 14,29]).map{|r| {r.id => r.neighbors.count}}