From a2894b7ad2b26ff65d36b9c87b79c60ff4ddda59 Mon Sep 17 00:00:00 2001 From: Brett Walker Date: Fri, 27 Oct 2017 16:32:48 +0200 Subject: [PATCH] use a delegate for `username` to be more future friendly --- app/controllers/confirmations_controller.rb | 3 +-- app/models/email.rb | 2 ++ spec/models/email_spec.rb | 8 ++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/controllers/confirmations_controller.rb b/app/controllers/confirmations_controller.rb index 8ca01a6e2c6..bc0948cd3fb 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 384f38f2db7..2da8b050149 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 b32dd31ae6d..4676612ad52 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 -- GitLab