summaryrefslogtreecommitdiff
path: root/app/models/member.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/member.rb')
-rw-r--r--app/models/member.rb15
1 files changed, 13 insertions, 2 deletions
diff --git a/app/models/member.rb b/app/models/member.rb
index 6c0503dca3f..528c6855d9c 100644
--- a/app/models/member.rb
+++ b/app/models/member.rb
@@ -108,6 +108,8 @@ class Member < ApplicationRecord
.reorder(nil)
end
+ scope :active_state, -> { where(state: STATE_ACTIVE) }
+
scope :connected_to_user, -> { where.not(user_id: nil) }
# This scope is exclusively used to get the members
@@ -115,6 +117,7 @@ class Member < ApplicationRecord
# to projects/groups.
scope :authorizable, -> do
connected_to_user
+ .active_state
.non_request
.non_minimal_access
end
@@ -128,7 +131,8 @@ class Member < ApplicationRecord
end
scope :without_invites_and_requests, -> do
- non_request
+ active_state
+ .non_request
.non_invite
.non_minimal_access
end
@@ -180,6 +184,7 @@ class Member < ApplicationRecord
scope :on_project_and_ancestors, ->(project) { where(source: [project] + project.ancestors) }
+ before_validation :set_member_namespace_id, on: :create
before_validation :generate_invite_token, on: :create, if: -> (member) { member.invite_email.present? && !member.invite_accepted_at? }
after_create :send_invite, if: :invite?, unless: :importing?
@@ -203,7 +208,7 @@ class Member < ApplicationRecord
class << self
def search(query)
- joins(:user).merge(User.search(query))
+ joins(:user).merge(User.search(query, use_minimum_char_limit: false))
end
def search_invite_email(query)
@@ -380,6 +385,12 @@ class Member < ApplicationRecord
private
+ # TODO: https://gitlab.com/groups/gitlab-org/-/epics/7054
+ # temporary until we can we properly remove the source columns
+ def set_member_namespace_id
+ self.member_namespace_id = self.source_id
+ end
+
def access_level_inclusion
return if access_level.in?(Gitlab::Access.all_values)