Skip to content

aq1018/dm-is-slug

Folders and files

NameName
Last commit message
Last commit date

Latest commit

23cf4f8 · Dec 29, 2013
Sep 13, 2013
Sep 14, 2013
Sep 14, 2013
Sep 5, 2013
Oct 18, 2010
Sep 13, 2013
Sep 13, 2013
Jan 12, 2009
Sep 13, 2013
Oct 27, 2010
Jan 12, 2009
Sep 13, 2013
Sep 13, 2013

Repository files navigation

<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

About

makes permalinks easy for datamapper objects

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages