-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なので、activerecordクエリも実行できます。これは疑似SQLでの私のショットです:

 Neighbors where household_id == household_id in @household-ids

それが役立つ場合、私はスクイールを使用しています

これを行うにはどうすればよいですか-アプローチは問題ないか、最良のアプローチの推奨事項は素晴らしいです

4

3 に答える 3

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}}
于 2013-07-25T13:19:19.593 に答える
0

Neighborモデルに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
于 2013-07-25T12:45:11.007 に答える