Module: HasWikiPageMetaAttributes
- Extended by:
- ActiveSupport::Concern
- Includes:
- Gitlab::Utils::StrongMemoize
- Included in:
- WikiPage::Meta
- Defined in:
- app/models/concerns/has_wiki_page_meta_attributes.rb
Constant Summary collapse
- CanonicalSlugConflictError =
Class.new(ActiveRecord::RecordInvalid)
- WikiPageInvalid =
Class.new(ArgumentError)
Instance Method Summary collapse
- #canonical_slug ⇒ Object
-
#canonical_slug=(slug) ⇒ Object
rubocop:disable Gitlab/ModuleWithInstanceVariables.
-
#update_state(created, known_slugs, wiki_page, updates) ⇒ Object
rubocop:enable Gitlab/ModuleWithInstanceVariables.
Instance Method Details
#canonical_slug ⇒ Object
89 90 91 |
# File 'app/models/concerns/has_wiki_page_meta_attributes.rb', line 89 def canonical_slug strong_memoize(:canonical_slug) { slugs.canonical.take&.slug } end |
#canonical_slug=(slug) ⇒ Object
rubocop:disable Gitlab/ModuleWithInstanceVariables
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'app/models/concerns/has_wiki_page_meta_attributes.rb', line 94 def canonical_slug=(slug) return if @canonical_slug == slug if persisted? transaction do slugs.canonical.update_all(canonical: false) page_slug = slugs.create_with(canonical: true).find_or_create_by(slug: slug) page_slug.update_columns(canonical: true) unless page_slug.canonical? end else slugs.new(slug: slug, canonical: true) end @canonical_slug = slug end |
#update_state(created, known_slugs, wiki_page, updates) ⇒ Object
rubocop:enable Gitlab/ModuleWithInstanceVariables
111 112 113 114 115 |
# File 'app/models/concerns/has_wiki_page_meta_attributes.rb', line 111 def update_state(created, known_slugs, wiki_page, updates) update_wiki_page_attributes(updates) insert_slugs(known_slugs, created, wiki_page.slug) self.canonical_slug = wiki_page.slug end |