summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorick Peterse <yorickpeterse@gmail.com>2018-07-30 13:17:31 +0000
committerYorick Peterse <yorickpeterse@gmail.com>2018-07-30 13:17:31 +0000
commit854eb4bece8a3a20d08462e295e3989b663e34d3 (patch)
treedcde004a00c019ec1bdd0713eb24ee12e595bc3d
parent31a4f48cde9ec5b869691e3e03713928c5ab9aa8 (diff)
parent90778e5d2752d4c10a536127d6ce75c32951b8c6 (diff)
downloadgitlab-ce-854eb4bece8a3a20d08462e295e3989b663e34d3.tar.gz
Merge branch 'ab-49609-internal-ids-require-init' into 'master'
Require has_internal_id to pass a init block. Closes #49609 See merge request gitlab-org/gitlab-ce!20873
-rw-r--r--app/models/concerns/atomic_internal_id.rb4
1 files changed, 4 insertions, 0 deletions
diff --git a/app/models/concerns/atomic_internal_id.rb b/app/models/concerns/atomic_internal_id.rb
index 164c704260e..4fef615e6e3 100644
--- a/app/models/concerns/atomic_internal_id.rb
+++ b/app/models/concerns/atomic_internal_id.rb
@@ -26,6 +26,10 @@ module AtomicInternalId
module ClassMethods
def has_internal_id(column, scope:, init:, presence: true) # rubocop:disable Naming/PredicateName
+ # We require init here to retain the ability to recalculate in the absence of a
+ # InternaLId record (we may delete records in `internal_ids` for example).
+ raise "has_internal_id requires a init block, none given." unless init
+
before_validation :"ensure_#{scope}_#{column}!", on: :create
validates column, presence: presence