Commit 0a1c2a368fe9272c97bf35f6afa4a7913081849a

Authored by Dhruv Kapadia
1 parent b109cfa5

Added aggregate query - number of votes by visitor id to support

geolocation
app/controllers/questions_controller.rb
... ... @@ -82,7 +82,21 @@ class QuestionsController < InheritedResources::Base
82 82 # export_type = params[:export_type]
83 83 # export_format = params[:export_format] #CSV always now, could expand to xml later
84 84 end
85   -
  85 +
  86 + def num_votes_by_visitor_id
  87 + authenticate
  88 +
  89 + @question = current_user.questions.find(params[:id])
  90 + hash = Vote.count(:conditions => "question_id = #{@question.id}", :group => "voter_id")
  91 + visitor_id_hash = {}
  92 + hash.each do |visitor_id, num_votes|
  93 + visitor = Visitor.find(visitor_id)
  94 + visitor_id_hash[visitor.identifier] = num_votes
  95 + end
  96 + respond_to do |format|
  97 + format.xml{ render :xml => visitor_id_hash.to_xml and return}
  98 + end
  99 + end
86 100  
87 101 protected
88 102 def export_votes
... ...
config/routes.rb
1 1 ActionController::Routing::Routes.draw do |map|
2 2 map.resources :clicks
3   - map.resources :questions, :member => { :export => :post, :set_autoactivate_ideas_from_abroad => :put, :activate => :put, :suspend => :put} do |question|
  3 + map.resources :questions, :member => { :num_votes_by_visitor_id => :get, :export => :post, :set_autoactivate_ideas_from_abroad => :put, :activate => :put, :suspend => :put} do |question|
4 4 question.resources :items
5 5 question.resources :prompts, :member => {:vote_left => :post, :vote_right => :post, :skip => :post, :vote => :post},
6 6 :collection => {:single => :get, :index => :get}
... ...