ActsAsDigestedOn
acts_as_digested_on is a rails plugin.
This sets the digested value before validation and validates uniqueness of the digested value.
Install
sudo gem install milk1000cc-acts_as_digested_on --source=http://gems.github.com
or
script/plugin install git://github.com/milk1000cc/acts_as_digested_on.git
Usage
# db/migrate/20090706000000_create_articles.rb
class CreateArticles < ActiveRecord::Migration
def self.up
create_table :articles do |t|
t.text :url # any type is ok
t.string :digest # this is sha-1 hex digest field of url value
...
end
add_index :articles, :digest, :unique => true # you can add index on digest field
end
def self.down
drop_table :articles
end
end
# app/models/article.rb
class Article < ActiveRecord::Base
acts_as_digested_on :url # please add this
...
end
# this means
class Article < ActiveRecord::Base
validates_uniqueness_of :digest
before_validation :set_digest
def generate_digest
Digest::SHA1.hexdigest "--#{ url.to_s }--"
end
private
def set_digest
self.digest = generate_digest
end
...
end
Examples
acts_as_digested_on :url, :unique => false
acts_as_digested_on :url, :digest_column => :url_digest
acts_as_digested_on [:url, :salt]
acts_as_digested_on :url, :scope => :site_id
Article.new(:url => 'http://example.com').generate_digest
Copyright
Copyright © 2009 milk1000cc, released under the MIT license
milk1000cc <[email protected]>