Sha256: 7971bf4a96c57be688f3284e917c429359f395367918dab7ee709cad48f05495

Contents?: true

Size: 828 Bytes

Versions: 5

Compression:

Stored size: 828 Bytes

Contents

module Adminos::Recognizable
  def self.included(base)
    base.extend ClassMethods
    # base.send(:include, InstanceMethods)
  end

  module ClassMethods
    def acts_as_recognizable(*args)
      extend FriendlyId

      options = args.extract_options!
      sluggable_column = args.first || options.delete(:sluggable_column) || :name
      slug_column = options.delete(:slug_column) || :slug

      friendly_id sluggable_column, slug_column: slug_column, use: :slugged
      validates slug_column, uniqueness: true

      define_method :slug_friendly do
        friendly_id
      end

      # friendly_id slugs transliteration <https://github.com/norman/babosa>.
      define_method :normalize_friendly_id do |input|
        input.to_s.to_slug.normalize(transliterations: :russian).normalize.to_s
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
adminos-1.0.0.pre.rc.5 lib/adminos/helpers/models/recognizable.rb
adminos-1.0.0.pre.rc.4 lib/adminos/helpers/models/recognizable.rb
adminos-1.0.0.pre.rc.3 lib/adminos/helpers/models/recognizable.rb
adminos-1.0.0.pre.rc.2 lib/adminos/helpers/models/recognizable.rb
adminos-1.0.0.pre.rc.1 lib/adminos/helpers/models/recognizable.rb