2013-07-25 37 views
-2

我的工作才是最重要的一个家庭的邻居的报告 - 我期待在使用一个辅助方法,简单的查询或两者从父阵列计数相关对象的对象

一个家庭是有几个对象邻居,我想计算一组选定的家庭中的邻居总数。我有户一组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的我也可以做一个积极的记录查询,这是我在伪sql的镜头:

Neighbors where household_id == household_id in @household-ids 

我使用squeel如果有帮助

如何做到这一点无论是-approach罚款,最好的办法的建议是伟大的

回答

0

目前还不清楚是什么你正在尝试做的,但我想这是你想要什么:

houses.map{|id| Household.find(id).neighbor_count}.inject(:+) 

如果有房子中的邻居中重复,那么你需要一个方法来获得的邻居集为一个给定的H ouse,不只是数。而且既然你还没有显示这样的方法,我想这或者不是问题,或者你的问题是不恰当的。

0

Asuming有邻居模型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 
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}}