0
0
Fork 0

Consolidate account scopes for LOWER (index using) username/domain queries (#30451)

This commit is contained in:
Matt Jankowski 2024-05-28 10:11:31 -04:00 committed by GitHub
parent 32c30bf0fd
commit 4a77e477ee
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 14 additions and 48 deletions

View file

@ -6,10 +6,7 @@ class UniqueUsernameValidator < ActiveModel::Validator
def validate(account)
return if account.username.blank?
normalized_username = account.username.downcase
normalized_domain = account.domain&.downcase
scope = Account.where(Account.arel_table[:username].lower.eq normalized_username).where(Account.arel_table[:domain].lower.eq normalized_domain)
scope = Account.with_username(account.username).with_domain(account.domain)
scope = scope.where.not(id: account.id) if account.persisted?
account.errors.add(:username, :taken) if scope.exists?