Sha256: 2dcecbd64e03c26d0f7257bee4860bbcdd401d4caad1beb6b2714d892f5bc38e

Contents?: true

Size: 778 Bytes

Versions: 1

Compression:

Stored size: 778 Bytes

Contents

module HumanUrls
  module Sluggable
    extend ActiveSupport::Concern

    included do
      before_validation :prepare_slug
    end

    module ClassMethods
      def sluggify(slug_param=:slug, generated_from: false)
        validates_presence_of slug_param
        validates_uniqueness_of slug_param, case_sensitive: false
        validates_length_of slug_param, maximum: 244

        define_method(:to_param) do
          send(slug_param)
        end

        define_method(:prepare_slug) do
          if generated_from.present?
            self.send("#{slug_param}=", send(generated_from))
          end
          self.send("#{slug_param}=", send(slug_param).to_s)
          self.send("#{slug_param}=", send(slug_param).parameterize)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
human_urls-0.1.0 lib/human_urls/sluggable.rb