From d7000e399f58486df32aa8ee9a3e354225f016db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juanjo=20Baza=CC=81n?= Date: Wed, 8 Feb 2017 15:50:13 +0100 Subject: [PATCH] logs user info in officer_assignments In case user is no longer a poll officer, info on who did what is stored in officer_assignment --- app/models/poll/officer_assignment.rb | 6 ++++++ ..._add_user_data_log_to_poll_officer_assignments.rb | 5 +++++ db/schema.rb | 3 ++- spec/models/poll/officer_assignment_spec.rb | 12 ++++++++++++ 4 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20170208114548_add_user_data_log_to_poll_officer_assignments.rb create mode 100644 spec/models/poll/officer_assignment_spec.rb diff --git a/app/models/poll/officer_assignment.rb b/app/models/poll/officer_assignment.rb index ed1902ab8..cd4f53266 100644 --- a/app/models/poll/officer_assignment.rb +++ b/app/models/poll/officer_assignment.rb @@ -15,5 +15,11 @@ class Poll scope :voting_days, -> { where(final: false) } scope :final, -> { where(final: true) } + + before_create :log_user_data + + def log_user_data + self.user_data_log = "#{officer.user_id} - #{officer.user.name_and_email}" + end end end diff --git a/db/migrate/20170208114548_add_user_data_log_to_poll_officer_assignments.rb b/db/migrate/20170208114548_add_user_data_log_to_poll_officer_assignments.rb new file mode 100644 index 000000000..93c2efd8b --- /dev/null +++ b/db/migrate/20170208114548_add_user_data_log_to_poll_officer_assignments.rb @@ -0,0 +1,5 @@ +class AddUserDataLogToPollOfficerAssignments < ActiveRecord::Migration + def change + add_column :poll_officer_assignments, :user_data_log, :string, default: "" + end +end diff --git a/db/schema.rb b/db/schema.rb index b44907334..274352986 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: 20170203163317) do +ActiveRecord::Schema.define(version: 20170208114548) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -433,6 +433,7 @@ ActiveRecord::Schema.define(version: 20170203163317) do t.datetime "updated_at", null: false t.date "date", null: false t.boolean "final", default: false + t.string "user_data_log", default: "" end create_table "poll_officers", force: :cascade do |t| diff --git a/spec/models/poll/officer_assignment_spec.rb b/spec/models/poll/officer_assignment_spec.rb new file mode 100644 index 000000000..b6bce5481 --- /dev/null +++ b/spec/models/poll/officer_assignment_spec.rb @@ -0,0 +1,12 @@ +require 'rails_helper' + +describe :officer_assignment do + it "should log user data on creation" do + user = create(:user, username: "Larry Bird", email: "larry@lege.nd") + officer = create(:poll_officer, user: user) + + oa = create(:poll_officer_assignment, officer: officer) + + expect(oa.reload.user_data_log).to eq "#{user.id} - Larry Bird (larry@lege.nd)" + end +end \ No newline at end of file