X-Git-Url: https://projects.mako.cc/source/selectricity/blobdiff_plain/ac5e3489e8b886b7b8a7252ab56ddeb3d3bdadc7..b8482ad1846436439b9ef3ba0ddcb3b42588d916:/app/models/vote.rb?ds=sidebyside diff --git a/app/models/vote.rb b/app/models/vote.rb old mode 100644 new mode 100755 index 014899d..f263a75 --- a/app/models/vote.rb +++ b/app/models/vote.rb @@ -13,7 +13,7 @@ class Vote < ActiveRecord::Base end def each - votes.each {|vote| yield vote} + self.votes.each {|vote| yield vote} end def votes @@ -34,10 +34,10 @@ class Vote < ActiveRecord::Base def save_rankings destroy_rankings - self.votes.each_with_index do |candidate, index| + self.votes.each_with_index do |candidate_id, index| ranking = Ranking.new ranking.rank = index - ranking.candidate = Candidate.find(candidate) + ranking.candidate = Candidate.find(candidate_id) self.rankings << ranking end end @@ -77,7 +77,22 @@ class Vote < ActiveRecord::Base end def votestring - self.votes.join("") + # create a mapping of candidates ids and the relative order of the + # candidates as they appear when sorted alphabetically + cand_relnums = {} + self.voter.election.candidates.sort.each_with_index do |c, i| + cand_relnums[c.id] = i + 1 + end + + # assemble the votestring + self.votes.collect {|v| cand_relnums[v]}.join("") end + # the following subroutine is used for quickvotes. it creates a vote + # with the candidates listed in order of preference based on + # alphabetical order. it is meant to be manipulated and then confirmed + def set_defaults! + self.votes = voter.election.candidates.sort.collect {|c| c.id } + self.save + end end