acts_as_stubbable¶ ↑
Why?¶ ↑
I tend to use a lot of url-friendly strings for SEO in my web apps. Wanting to dry up my code, I created a module mixin for generating stubs, and turned it into a light-weight gem.
Installation¶ ↑
For Rails 3, in your Gemfile: gem ‘acts_as_stubbable’
Usage¶ ↑
Let’s pretend we have a column for our Thing class called name, which is a string. First in your ActiveRecord
model, tell Stubbable
which column should be used to generate the stub, i.e.
acts_as_stubbable :column => :name
So that your model looks like:
class Thing < ActiveRecord::Base attr_accessible :name, :stub #for rails 3.2 onwards, acts_as_stubbable :column => :name end
Lastly, don’t forget to create a migration for your model which adds the :stub column, i.e.
class AdStubToThings < ActiveRecord::Migration def up add_column :things, :stub, :string end def down remove_column :things, :stub end end
Now, when a new Thing instance is created with a name, i.e.
t = Thing.new(:name => 'My name is Lionel Hutz aka Miguel Sanchez!') t.save puts t.stub => 'my-name-is-lionel-hutz-aka-miguel-sanchez'
you get a url-friendly string, with any special characters stripped and spaced turned into hyphens, using the built-in String.parameterize method.
Like the ads say, “It’s that simple, it really is!”