module UserFindByConcern extend ActiveSupport::Concern included do def self.by_email(email) find_by(users: { email: email }) end def self.find_all_by_identifier(ids: [], emails: []) find_all_by_identifier_with_emails(ids:, emails:).first end def self.find_all_by_identifier_with_emails(ids: [], emails: []) valid_emails, invalid_emails = emails.partition { Devise.email_regexp.match?(_1) } [ where(id: ids).or(where(users: { email: valid_emails })).distinct(:id), valid_emails, invalid_emails ] end end end