<img src=“https://badge.fury.io/rb/dm-is-slug.png” alt=“Gem Version” /> <img src=“https://gemnasium.com/aq1018/dm-is-slug.png” alt=“Dependency Status” /> <img src=“https://travis-ci.org/aq1018/dm-is-slug.png” /> <img src=“https://codeclimate.com/github/aq1018/dm-is-slug.png” /> <img src=“https://coveralls.io/repos/aq1018/dm-is-slug/badge.png?branch=master” alt=“Coverage Status” />
dm-is-slug¶ ↑
DataMapper plugin for creating and slugs(permalinks).
Installation¶ ↑
> gem install dm-is-slug
Usage¶ ↑
Creating a slug from property¶ ↑
class Post include DataMapper::Resource property :id, Serial property :title, String property :content, String # here we define that it should have a slug that uses title as the permalink # it will generate an extra slug property of String type, with the same size as title is :slug, :source => :title end
Creating a slug from arbitrary methods¶ ↑
class User include DataMapper::Resource property :id, Serial property :email, String property :password, String # we only want to strip out the domain name # and use only the email account name as the permalink def slug_for_email email.split("@").first end # here we define that it should have a slug that uses title as the permalink # it will generate an extra slug property of String type, with the same size as title is :slug, :source => :slug_for_email, :size => 255 end
Scoped slugs¶ ↑
class Post include DataMapper::Resource property :id, Serial property :title, String property :content, String property :category, String # Same as above but slugs will be unique only within their category. is :slug, :source => :title, :slug => :category end
Finding objects by slug¶ ↑
post = Post.first(:slug => "your_slug")
Development¶ ↑
It’s recommended to use bundler in development.
gem install bundler ADAPTERS='in_memory yaml sqlite postgres mysql' bundle install --without quality
This will install all dependencies so that you could run specs.
bundle exec rake spec ADAPTER=sqlite