diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2015-06-24 12:58:14 +0200 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2015-06-24 12:58:14 +0200 |
commit | 81952b619b0aa22c1bc75323a26402505ea0ff76 (patch) | |
tree | bb3dc3cf7bf61bb9090db5d48a02119fb8343370 | |
parent | b8af2ecc164a4ed1e5e957c9ffe440557ce399b8 (diff) | |
parent | 43b444f40a1ae5b28ad3673a667e3539e28c5d68 (diff) | |
download | gitlab-ce-81952b619b0aa22c1bc75323a26402505ea0ff76.tar.gz |
Merge branch 'master' of gitlab.com:gitlab-org/gitlab-ce
-rw-r--r-- | app/models/commit.rb | 4 | ||||
-rw-r--r-- | app/models/user.rb | 12 | ||||
-rw-r--r-- | spec/models/user_spec.rb | 14 |
3 files changed, 10 insertions, 20 deletions
diff --git a/app/models/commit.rb b/app/models/commit.rb index 9d721661629..aff329d71fa 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -157,11 +157,11 @@ class Commit end def author - User.find_for_commit(author_email, author_name) + @author ||= User.find_by_any_email(author_email) end def committer - User.find_for_commit(committer_email, committer_name) + @committer ||= User.find_by_any_email(committer_email) end def notes diff --git a/app/models/user.rb b/app/models/user.rb index f1bcecc13b3..dc84f5141d8 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -225,7 +225,8 @@ class User < ActiveRecord::Base end end - def find_for_commit(email, name) + # Find a User by their primary email or any associated secondary email + def find_by_any_email(email) user_table = arel_table email_table = Email.arel_table @@ -237,13 +238,8 @@ class User < ActiveRecord::Base join(email_table, Arel::Nodes::OuterJoin). # ON "users"."id" = "emails"."user_id" on(user_table[:id].eq(email_table[:user_id])). - # WHERE ("user"."email" = '<email>' OR "user"."name" = '<name>') - # OR "emails"."email" = '<email>' - where( - user_table[:email].eq(email). - or(user_table[:name].eq(name)). - or(email_table[:email].eq(email)) - ) + # WHERE ("user"."email" = '<email>' OR "emails"."email" = '<email>') + where(user_table[:email].eq(email).or(email_table[:email].eq(email))) find_by_sql(query.to_sql).first end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index b80273c053d..6d2423ae27a 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -366,28 +366,22 @@ describe User do end end - describe '.find_for_commit' do + describe '.find_by_any_email' do it 'finds by primary email' do user = create(:user, email: 'foo@example.com') - expect(User.find_for_commit(user.email, '')).to eq user + expect(User.find_by_any_email(user.email)).to eq user end it 'finds by secondary email' do email = create(:email, email: 'foo@example.com') user = email.user - expect(User.find_for_commit(email.email, '')).to eq user - end - - it 'finds by name' do - user = create(:user, name: 'Joey JoJo') - - expect(User.find_for_commit('', 'Joey JoJo')).to eq user + expect(User.find_by_any_email(email.email)).to eq user end it 'returns nil when nothing found' do - expect(User.find_for_commit('', '')).to be_nil + expect(User.find_by_any_email('')).to be_nil end end |