From bfbc49ef6fdfbf1ad93c8fec203d8d4535f03428 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= <regis@hanol.fr> Date: Mon, 29 Dec 2014 11:50:36 +0100 Subject: [PATCH] FIX: log only 1 'show email' record --- app/services/staff_action_logger.rb | 18 +++++------------- .../controllers/admin/users_controller_spec.rb | 4 ++-- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/app/services/staff_action_logger.rb b/app/services/staff_action_logger.rb index 0c9e6c115ca..fc6bfdf100b 100644 --- a/app/services/staff_action_logger.rb +++ b/app/services/staff_action_logger.rb @@ -143,20 +143,12 @@ class StaffActionLogger })) end - def log_show_emails(users) + def log_show_emails(users, opts={}) return if users.blank? - - values = [] - - users.each do |user| - values << "(#{@admin.id}, #{UserHistory.actions[:check_email]}, #{user.id}, current_timestamp, current_timestamp)" - end - - # bulk insert - UserHistory.exec_sql <<-SQL - INSERT INTO user_histories (acting_user_id, action, target_user_id, created_at, updated_at) - VALUES #{values.join(",")} - SQL + UserHistory.create(params(opts).merge({ + action: UserHistory.actions[:check_email], + details: users.map { |u| "[#{u.id}] #{u.username}"}.join("\n") + })) end def log_impersonate(user, opts={}) diff --git a/spec/controllers/admin/users_controller_spec.rb b/spec/controllers/admin/users_controller_spec.rb index 954bd803184..31271da27c6 100644 --- a/spec/controllers/admin/users_controller_spec.rb +++ b/spec/controllers/admin/users_controller_spec.rb @@ -33,13 +33,13 @@ describe Admin::UsersController do end end - it "logs an enty for all email shown" do + it "logs only 1 enty" do UserHistory.where(action: UserHistory.actions[:check_email], acting_user_id: @user.id).count.should == 0 xhr :get, :index, show_emails: "true" data = ::JSON.parse(response.body) - UserHistory.where(action: UserHistory.actions[:check_email], acting_user_id: @user.id).count.should == data.length + UserHistory.where(action: UserHistory.actions[:check_email], acting_user_id: @user.id).count.should == 1 end end