¶ ↑
SluggerSlugger is yet another slug generator. It makes pretty urls for Active Record models. Why would the ruby (on rails) community need another slug generating plugin you ask? It doesn’t, but I needed one that would jump through some hoops to make sure slugs are unique without setting errors.
¶ ↑
InstallationIt’s a gem. Either run ‘gem install slugger` at the command line, or add `gem ’slugger’‘ to your Gemfile.
¶ ↑
Usagehas_slug :source_column, [options_hash]
The default source column is title and slug column is, well slug. The following two settings are the same:
has_slug has_slug :title, :slug_column => 'slug'
:source_column can also be an array, for example, if you wanted to create slugs for an Author model on first and last name:
class Author << ActiveRecord::Base has_slug [:first_name, :last_name] end
To be sure that the slug will never have a validation error:
class Post << ActiveRecord::Base has_slug :title, :on_conflict => :concat_random_chars end
Say you have an Episode model that belongs to TVSeries. Every episode will have a pilot, but you don’t want the unique validation to build silly looking urls: (this doesn’t actually work), patches welcome
class Episode << ActiveRecord::Base belongs_to :series has_slug :title, :scope => :series_id end
¶ ↑
Examplecreate_table "collections" do |t| t.string "title" t.string "slug" end add_index(:collections, :slug) class Collection < ActiveRecord::Base has_slug end Collection.create(:title => 'Quick foxes jumping') Collection.first.slug => 'quick-foxes-jumping'