Module: Pageflow::AutoGeneratedPermaId

Extended by:
ActiveSupport::Concern
Included in:
Chapter, Page, RevisionComponent
Defined in:
app/models/concerns/pageflow/auto_generated_perma_id.rb

Overview

Add a perma_id attribute of type integer. The perma_id is automatically generated on create and remains unchanged throughout the models lifecycle.

Instance Method Summary collapse

Instance Method Details

#ensure_perma_idObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/models/concerns/pageflow/auto_generated_perma_id.rb', line 12

def ensure_perma_id
  return if perma_id.present?

  entry = entry_for_auto_generated_perma_id

  self.perma_id =
    if entry.new_record?
      # No other process can see the entry yet, so there is nothing
      # to lock.
      entry.increment(:perma_id_counter).perma_id_counter
    else
      entry.with_lock do
        entry.increment!(:perma_id_counter)
        entry.perma_id_counter
      end
    end
end

#entry_for_auto_generated_perma_idObject

Raises:

  • (NotImplementedError)


30
31
32
33
# File 'app/models/concerns/pageflow/auto_generated_perma_id.rb', line 30

def entry_for_auto_generated_perma_id
  raise NotImplementedError,
        "#{self.class.name} must implement #entry_for_auto_generated_perma_id"
end