File: sequentially_slugged.rb

package info (click to toggle)
ruby-friendly-id 5.5.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 432 kB
  • sloc: ruby: 3,143; makefile: 3
file content (40 lines) | stat: -rw-r--r-- 820 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
require_relative "sequentially_slugged/calculator"

module FriendlyId
  module SequentiallySlugged
    def self.setup(model_class)
      model_class.friendly_id_config.use :slugged
    end

    def resolve_friendly_id_conflict(candidate_slugs)
      candidate = candidate_slugs.first
      return if candidate.nil?

      Calculator.new(
        scope_for_slug_generator,
        candidate,
        slug_column,
        friendly_id_config.sequence_separator,
        slug_base_class
      ).next_slug
    end

    private

    def slug_base_class
      if friendly_id_config.uses?(:history)
        Slug
      else
        self.class.base_class
      end
    end

    def slug_column
      if friendly_id_config.uses?(:history)
        :slug
      else
        friendly_id_config.slug_column
      end
    end
  end
end