Предполагая, что телефон принадлежит пользователю, а кампания принадлежит телефону:
# total calls for a specific campaign
campaign_call_count = Campaign.find(id).calls.count
# or a report for all campaings
Campaign.all.map{|c| "#{c.name}: #{c.calls.count}"
#total calls a user has
user_phone_ids = user.phones.map(&:id)
user_calls_by_campaign = Campaign.where(:phone_id=>user_phone_ids).map{|campaign| "#{user.name} calls for #{campaign.name}: #{campaign.calls.count}" }
puts user_calls_by_campaign
Это должно дать вам список