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_id ⇒ Object
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_id ⇒ Object
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 |