From 48f6efa2fbd1e9fd1dd7638ed482fc8ce5a3e136 Mon Sep 17 00:00:00 2001 From: John Dong Date: Thu, 30 Aug 2007 11:55:30 -0400 Subject: [PATCH] Fix full voter addition bug where the regex flunks the trailing \r on middle items in the list. At the same time, make sure to only add a voter to the election if it passes validation. This prevents cases where the voter shows up on the AJAX list but mysteriously disappears after confirming. --- app/controllers/election_controller.rb | 15 +++++++++------ db/schema.rb | 5 ++--- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/app/controllers/election_controller.rb b/app/controllers/election_controller.rb index fa1313c..05a66ff 100644 --- a/app/controllers/election_controller.rb +++ b/app/controllers/election_controller.rb @@ -145,7 +145,6 @@ class ElectionController < ApplicationController if params.has_key?( :raw_voter_list ) process_incoming_voters( params[:raw_voter_list] ) end - @raw_voter_list = RawVoterList.new end @@ -200,7 +199,8 @@ class ElectionController < ApplicationController unless incoming_voters.entries.empty? incoming_voters.each do |new_voter| - + new_voter.email.strip! # There's a trailing \r on all but the last in + # the list! if incoming_voters.email == 0 new_voter.contacted = 1 elsif incoming_voters.email == 1 @@ -209,11 +209,14 @@ class ElectionController < ApplicationController else new_voter.contacted = 0 end - - # the new voter should be in good shape. save add to the election - @election.voters << new_voter - new_voter.save + if new_voter.valid? + # the new voter should be in good shape. save add to the election + @election.voters << new_voter + new_voter.save + end + # TODO: Can we do some kind of AJAX error message for the voter being invalid? end + @election.save end # reset the next time to have a the same default value for emailing diff --git a/db/schema.rb b/db/schema.rb index 6c038de..590425d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -74,11 +74,10 @@ ActiveRecord::Schema.define() do create_table "voters", :force => true do |t| t.column "email", :string, :limit => 100 t.column "password", :string, :limit => 100 - t.column "contacted", :integer, :limit => 4, :default => 0, :null => false - t.column "election_id", :integer, :null => false + t.column "contacted", :integer, :limit => 4, :default => 0, :null => false + t.column "election_id", :integer, :null => false t.column "session_id", :string, :limit => 32 t.column "ipaddress", :string, :limit => 32 - t.column "type", :string, :limit => 100, :default => "", :null => false end add_index "voters", ["election_id"], :name => "fk_election_voter" -- 2.39.5