https://github.com/lance/acts_as_keyable
Uses Rails routing to make nice URLs so you get /books/oliver_twist instead of /books/1234
https://github.com/lance/acts_as_keyable
Last synced: over 1 year ago
JSON representation
Uses Rails routing to make nice URLs so you get /books/oliver_twist instead of /books/1234
- Host: GitHub
- URL: https://github.com/lance/acts_as_keyable
- Owner: lance
- License: mit
- Created: 2009-02-26T20:15:21.000Z (over 17 years ago)
- Default Branch: master
- Last Pushed: 2009-02-26T21:02:09.000Z (over 17 years ago)
- Last Synced: 2025-02-10T11:48:48.565Z (over 1 year ago)
- Language: Ruby
- Homepage:
- Size: 78.1 KB
- Stars: 4
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.textile
- License: LICENSE.txt
Awesome Lists containing this project
README
h1. Acts As Keyable
This is a simple acts_as extension for Rails apps. It makes use of some nice Rails 2.x features and RESTful routes
in order to provide you with even prettier URLs. By default Rails scaffolds generate URLS such as
@http://yoursite.com/members/4@ or for nested routed @http://yoursite.com/members/4/plans@ which isn't really
ideal if you want pretty URLs. Acts as Keyable gives you something this: @http://yoursite.com/members/john/plans@.
h2. Installation
Copy @acts_as_keyable.rb@ into your @RAILS_ROOT/lib@ and add this to the models you want to have pretty URLs, e.g.
require 'acts_as_keyable'
class Member < ActiveRecord::Base
acts_as_keyable :username
end
Any ActiveRecord class you make keyable must have a @key@ column of type @:string@. You specify what field to
use to generate the key with a parameter. Another example:
require 'acts_as_keyable'
class Book < ActiveRecord::Base
acts_as_keyable :title
end
Acts as Keyable will call @validates_presence_of@ and @validates_uniqueness_of@ for the parameter provided.
The key is set when the object is created and not modified thereafter. It may be modified manually, e.g.
Book.find(:first).key = Book.generate_key_for(:some_other_thing)
Keys are shortened to just alphanumeric characters. So a username of "john_doe" becomes a key of "johndoe".
If there is already a key "johndoe" in the database, then a monotonically increasing number will be appended
to the key, e.g. "johndoe_1" and "johndoe_2".