diff --git a/app/models/poll/voter.rb b/app/models/poll/voter.rb index 8b0202aee..dd8c85d8f 100644 --- a/app/models/poll/voter.rb +++ b/app/models/poll/voter.rb @@ -1,11 +1,13 @@ class Poll class Voter < ActiveRecord::Base belongs_to :booth_assignment - delegate :poll, to: :booth_assignment + belongs_to :poll validates :booth_assignment, presence: true validate :in_census validate :has_not_voted + validates :poll, presence: true + validates :document_number, presence: true, uniqueness: { scope: [:poll_id, :document_type] } def in_census errors.add(:document_number, :not_in_census) unless census_api_response.valid? diff --git a/db/migrate/20170125104542_add_poll_id_and_stats_fields_to_poll_voter.rb b/db/migrate/20170125104542_add_poll_id_and_stats_fields_to_poll_voter.rb new file mode 100644 index 000000000..84e7de5d9 --- /dev/null +++ b/db/migrate/20170125104542_add_poll_id_and_stats_fields_to_poll_voter.rb @@ -0,0 +1,12 @@ +class AddPollIdAndStatsFieldsToPollVoter < ActiveRecord::Migration + def change + add_column :poll_voters, :poll_id, :integer, null: false + + remove_column :poll_voters, :booth_assignment_id, :integer, null: false + add_column :poll_voters, :booth_assignment_id, :integer + + add_column :poll_voters, :age, :integer + add_column :poll_voters, :gender, :string + add_column :poll_voters, :geozone_id, :integer + end +end diff --git a/db/schema.rb b/db/schema.rb index 8eb3c5ce3..0cdbcad2b 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20170120164547) do +ActiveRecord::Schema.define(version: 20170125104542) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -449,9 +449,13 @@ ActiveRecord::Schema.define(version: 20170120164547) do create_table "poll_voters", force: :cascade do |t| t.string "document_number" t.string "document_type" - t.integer "booth_assignment_id", null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.integer "poll_id", null: false + t.integer "booth_assignment_id" + t.integer "age" + t.string "gender" + t.integer "geozone_id" end create_table "polls", force: :cascade do |t|