summaryrefslogtreecommitdiff
path: root/app/models/concerns/atomic_internal_id.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/concerns/atomic_internal_id.rb')
-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