2023-01-13 00:05:48 +05:30
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module Users
|
|
|
|
class NamespaceCommitEmail < ApplicationRecord
|
|
|
|
belongs_to :user
|
|
|
|
belongs_to :namespace
|
|
|
|
belongs_to :email
|
|
|
|
|
|
|
|
validates :user, presence: true
|
|
|
|
validates :namespace, presence: true
|
|
|
|
validates :email, presence: true
|
2023-03-17 16:20:25 +05:30
|
|
|
validates :user, uniqueness: { scope: :namespace_id }
|
|
|
|
validate :validate_root_group
|
|
|
|
|
|
|
|
def self.delete_for_namespace(namespace)
|
|
|
|
where(namespace: namespace).delete_all
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def validate_root_group
|
|
|
|
# Due to the way Rails validations are invoked all at once,
|
|
|
|
# namespace sometimes won't exist when this is ran even though we have a validation for presence first.
|
|
|
|
return unless namespace&.group_namespace?
|
|
|
|
return if namespace.root?
|
|
|
|
|
|
|
|
errors.add(:namespace, _('must be a root group.'))
|
|
|
|
end
|
2023-01-13 00:05:48 +05:30
|
|
|
end
|
|
|
|
end
|