fix qualified names bug with Account#users_name_like

refs #CNVS-30606

Change-Id: Ief66913dfaefe856fd893df26677c9db16a2dde9
Reviewed-on: https://gerrit.instructure.com/86248
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
QA-Review: James Williams  <jamesw@instructure.com>
This commit is contained in:
James Williams 2016-07-27 07:59:34 -06:00
parent fd671bc0ab
commit d47e30ce36
2 changed files with 21 additions and 4 deletions

View File

@ -176,10 +176,12 @@ class User < ActiveRecord::Base
scope :name_like, lambda { |name|
next none if name.strip.empty?
scopes = []
scopes << unscoped.where(wildcard('users.name', name))
scopes << unscoped.where(wildcard('users.short_name', name))
scopes << unscoped.joins(:pseudonyms).where(wildcard('pseudonyms.sis_user_id', name)).where(pseudonyms: {workflow_state: 'active'})
scopes << unscoped.joins(:pseudonyms).where(wildcard('pseudonyms.unique_id', name)).where(pseudonyms: {workflow_state: 'active'})
all.primary_shard.activate do
scopes << unscoped.where(wildcard('users.name', name))
scopes << unscoped.where(wildcard('users.short_name', name))
scopes << unscoped.joins(:pseudonyms).where(wildcard('pseudonyms.sis_user_id', name)).where(pseudonyms: {workflow_state: 'active'})
scopes << unscoped.joins(:pseudonyms).where(wildcard('pseudonyms.unique_id', name)).where(pseudonyms: {workflow_state: 'active'})
end
scopes.map!(&:to_sql)
self.from("(#{scopes.join("\nUNION\n")}) users")

View File

@ -1525,4 +1525,19 @@ describe Account do
end
end
describe "#users_name_like" do
context 'sharding' do
specs_require_sharding
it "should work cross-shard" do
ActiveRecord::Base.connection.stubs(:use_qualified_names?).returns(true)
@shard1.activate do
@account = Account.create!
@user = user(:name => "silly name")
@user.account_users.create(:account => @account)
end
expect(@account.users_name_like("silly").first).to eq @user
end
end
end
end