Sha256: f8c9a2298e1d7d06a0c65920d4e645f9662093d706fae11b117f2f06c09b2eac

Contents?: true

Size: 880 Bytes

Versions: 1

Compression:

Stored size: 880 Bytes

Contents

module Pageflow
  # @api private
  class Permalink < ApplicationRecord
    extend FriendlyId
    friendly_id :slug_candidates, use: :scoped, scope: :directory

    before_validation :set_default_slug

    has_one :entry

    belongs_to :directory, class_name: 'PermalinkDirectory'

    validates(:slug,
              format: /\A[0-9a-zA-Z_-]+\z/,
              uniqueness: {scope: :directory})

    validate :belongs_to_same_theming_as_entry

    private

    def set_default_slug
      self.slug = entry.default_permalink_slug if slug == ''
    end

    def slug_candidates
      [entry.title, "#{entry.title}-#{entry.id}"]
    end

    def should_generate_new_friendly_id?
      slug.nil?
    end

    def belongs_to_same_theming_as_entry
      return if !directory || !entry || entry.theming_id == directory.theming_id

      errors.add(:directory, :invalid)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pageflow-15.8.0 app/models/pageflow/permalink.rb