Skip to content

Latest commit

 

History

History
70 lines (48 loc) · 1.66 KB

README.rdoc

File metadata and controls

70 lines (48 loc) · 1.66 KB

acts_as_digested_on is a gem for Rails 3 and Rails 4.

This sets the digested value before validation and validates uniqueness of the digested value.

If you use this gem for Rails 2, see rails-2 branch.

Install

sudo gem install acts_as_digested_on

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 © 2009-2013 milk1000cc, released under the MIT license

milk1000cc <info@milk1000.cc>