diff --git a/app/controllers/confirmations_controller.rb b/app/controllers/confirmations_controller.rb index 8ca01a6e2c63c63f64d384c51d6f30e2e4971182..bc0948cd3fb87075f70f14f199f970326b5a1a3a 100644 --- a/app/controllers/confirmations_controller.rb +++ b/app/controllers/confirmations_controller.rb @@ -15,8 +15,7 @@ class ConfirmationsController < Devise::ConfirmationsController if signed_in?(:user) after_sign_in(resource) else - username = (resource_name == :email ? resource.user.username : resource.username) - Gitlab::AppLogger.info("Email Confirmed: username=#{username} email=#{resource.email} ip=#{request.remote_ip}") + Gitlab::AppLogger.info("Email Confirmed: username=#{resource.username} email=#{resource.email} ip=#{request.remote_ip}") flash[:notice] += " Please sign in." new_session_path(:user) end diff --git a/app/models/email.rb b/app/models/email.rb index 384f38f2db7a45eb0668ded6a9d0351ad9ece561..2da8b050149cebef5b5a1ebed97a7b4f39cc3c21 100644 --- a/app/models/email.rb +++ b/app/models/email.rb @@ -14,6 +14,8 @@ class Email < ActiveRecord::Base devise :confirmable self.reconfirmable = false # currently email can't be changed, no need to reconfirm + delegate :username, to: :user + def email=(value) write_attribute(:email, value.downcase.strip) end diff --git a/spec/models/email_spec.rb b/spec/models/email_spec.rb index b32dd31ae6d61c12e122d88019e8ac33dafeacbb..4676612ad52848acf6d035d0e221d9acbc6a6c07 100644 --- a/spec/models/email_spec.rb +++ b/spec/models/email_spec.rb @@ -40,4 +40,12 @@ describe Email do expect(user.emails.confirmed.count).to eq 1 end end + + describe 'delegation' do + let(:user) { create(:user) } + + it 'delegates to :user' do + expect(build(:email, user: user).username).to eq user.username + end + end end