Skip to content
Tiny plugin for MongoMapper to cache a slugged version of a field
Ruby
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
lib
spec
.gitignore
.rspec
Gemfile
Gemfile.lock
LICENSE
README.rdoc
Rakefile
mm-sluggable.gemspec

README.rdoc

MongoMapper::Plugins::Sluggable

Tiny plugin for MongoMapper to cache a slugged version of a field

Usage

Either load it into all models, or individual models:

# add to all models
MongoMapper::Document.plugin(MongoMapper::Plugins::Sluggable)

# add to a specific model
plugin MongoMapper::Plugins::Sluggable

Then call sluggable to configure it

sluggable :title, :scope => :account_id

Options

Available options are:

  • :scope - scope to a specific field (default - nil)

  • :key - what the slug key is called (default - :slug)

  • :method - what method to call on the field to sluggify it (default - :parameterize)

  • :callback - when to trigger the slugging (default - :before_validation_on_create)

  • :start - what number to start the version numbers (default - 2)

Eg.

sluggable :title, :scope => :account_id, :key => :title_slug, :method => :to_url, :start => 42

This will slug the title to the title_slug key, scoped to the account, will use String#to_url to slug it and start the versions at 42

Versioning

If an item with the same slug exists, it will add a version number to the slug.

IE assuming we already have an item with the slug of “dave”, the slug will be generated as “dave-1”

Note on Patches/Pull Requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don't break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself in another branch so I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.

Install

$ gem install mm-sluggable

Copyright

See LICENSE for details.

Something went wrong with that request. Please try again.