Adds ActiveRecord validations based on the DB schema
Ruby
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
spec
.gitignore
.rvmrc
Gemfile
Gemfile.lock
LICENSE
README
README.textile
Rakefile
validates_schema.gemspec

README.textile

Validates Schema

Add a few validations for ActiveRecord objects (ActiveRecord 3.0+) based off of the schema for each table.

Installation

Add the following to your Gemfile:


  gem 'validates_schema'

Then install the gem:


  $ bundle install

That’s it! There is nothing else you need to do to get validations on your ActiveRecord models. When each of your models inherits ActiveRecord::Base it will automatically look up the schema for that model and generate the appropriate validations based on the schema.

Examples

The following schema:


  ActiveRecord::Schema.define do

    create_table :users, :force => true do |t|
      t.string :name, :limit => 200
      t.string :email
      t.string :password, :null => false
      t.string :url, :limit => 128, :null => false
      t.integer :age
      t.integer :pin, :limit => 8, :null => false
      t.float :salt
      t.text :bio
      t.text :summary, :null => false
      t.boolean :alive, :null => false
      t.decimal :salary, :null => false, :precision => 2, :scale => 8
      t.timestamps
    end

  end

will generate the following validations:


  class User < ActiveRecord::Base
    validates :name,      :length => {:maximum => 200}
    validates :email,     :length => {:maximum => 255}
    validates :password,  :length => {:maximum => 255}, :presence => true
    validates :url,       :length => {:maximum => 128}, :presence => true
    validates :age,       :numericality => {:only_integer => true}
    validates :pin,       :numericality => {:only_integer => true}, :presence=>true
    validates :salt,      :numericality => true
    validates :summary,   :presence => true
    validates :alive,     :presence => true
    validates :salary,    :numericality => true, :presence => true
  end