Sha256: 5390f44355c86a426232d0b4abbfb2223029de02c2684cb5bc2e85904c7d2171

Contents?: true

Size: 780 Bytes

Versions: 18

Compression:

Stored size: 780 Bytes

Contents

module ManualSlug
  extend ActiveSupport::Concern
  include Mongoid::Slug

  def text_slug
    self._slugs.empty? ? '' : self._slugs.last
  end
  def text_slug=(slug)
    if slug.blank?
      self._slugs = []
    else
      self._slugs.delete(slug)
      self._slugs << slug
    end
  end

  module ClassMethods
    def manual_slug(field, options = {}, callback = true)
      options.merge!(permanent: true, history: true)
      slug field, options

      # we will create slugs manually when needed
      skip_callback :create, :before, :build_slug

      before_validation do
        self._slugs = self._slugs.map{ |s| s.strip }.select {|s| !s.blank? }

        if self._slugs.empty?
          self.build_slug
        end

        true
      end if callback
    end
  end

end

Version data entries

18 entries across 18 versions & 2 rubygems

Version Path
rocket_cms_mongoid-0.5.12 lib/rocket_cms_mongoid/manual_slug.rb
rocket_cms_mongoid-0.5.11 lib/rocket_cms_mongoid/manual_slug.rb
rocket_cms_mongoid-0.5.10 lib/rocket_cms_mongoid/manual_slug.rb
rocket_cms_mongoid-0.5.9 lib/rocket_cms_mongoid/manual_slug.rb
rocket_cms_mongoid-0.5.8 lib/rocket_cms_mongoid/manual_slug.rb
rocket_cms_mongoid-0.5.7 lib/rocket_cms_mongoid/manual_slug.rb
rocket_cms-0.5.4 app/models/concerns/manual_slug.rb
rocket_cms-0.5.3 app/models/concerns/manual_slug.rb
rocket_cms-0.5.2 app/models/concerns/manual_slug.rb
rocket_cms-0.5.1 app/models/concerns/manual_slug.rb
rocket_cms-0.5.0 app/models/concerns/manual_slug.rb
rocket_cms-0.5.0.rc.5 app/models/concerns/manual_slug.rb
rocket_cms-0.5.0.rc.4 app/models/concerns/manual_slug.rb
rocket_cms-0.4.2 app/models/concerns/manual_slug.rb
rocket_cms-0.3.2 app/models/concerns/manual_slug.rb
rocket_cms-0.2.12 app/models/concerns/manual_slug.rb
rocket_cms-0.2.10 app/models/concerns/manual_slug.rb
rocket_cms-0.1.13 app/models/concerns/manual_slug.rb