Sha256: cbe5f829311aad54d67abdd4a7d47e513f38cd72a38807d5292cddfecd4b890b
Contents?: true
Size: 994 Bytes
Versions: 1
Compression:
Stored size: 994 Bytes
Contents
module MongoMapperExt module Slugizer def self.included(klass) klass.class_eval do extend ClassMethods extend Finder key :slug, String ensure_index :slug before_validation_on_create :generate_slug end end def to_param if self.slug.blank? self.id else self.slug end end protected def generate_slug if self.slug.blank? key = UUIDTools::UUID.random_create.hexdigest[0,4] #optimize self.slug = key+"-"+self[self.class.slug_key].gsub(/[^A-Za-z0-9\s\-]/, "")[0,20].strip.gsub(/\s+/, "-").downcase end end module ClassMethods def slug_key(key = :name) @slug_key ||= key end end module Finder def by_slug(id) self.find_by_slug(id) || self.find_by_id(id) end alias :find_by_slug_or_id :by_slug end end end MongoMapper::Associations::Proxy.send(:include, MongoMapperExt::Slugizer::Finder)
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mongomapper_ext-0.0.4 | lib/mongomapper_ext/slugizer.rb |