Schema Validations plugin

Plugin details

Schema Validations is a plugin that reads various constraints defined against columns in your database and applies the closest matching rails validation. (Ala Dave Thomas’ Keynote.)

Websitehttp://www.redhillonrails.org/ Repositorysvn://rubyforge.org/var/svn/redhillonrails/trunk/vendor/plugins/schema_validations Author Red Hill Consulting Tags ActiveRecord, Database, Schema, validation LicenseMIT

Documentation

Install the plugin:
ruby script/plugin install svn://rubyforge.org/var/svn/redhillonrails/trunk/vendor/plugins/schema_validations

Over and above installing the plugin, no further action is required for the validations to take effect; the database schema constraints will be read and applied as validations when your ActiveRecord model classes are loaded; just like magic.

The plugin supports the following constraints:

* NOT NULL is converted to validates_presence_of (including belongs_to associations);
* Numbers are checked using validates_numericality_of (including :only_integer => true);
* String lengths are checked using validates_length_of;
* Single-column unique indexes are converted to validates_uniqueness_of; and
* Multi-column unique indexes are converted to validates_uniqueness_of with scope.

For multi-column unique indexes the column validated for uniqueness is either the last column not ending in ‘_id’ or simply the last column. This follows the typical composite unique index column ordering where the scoping is specified first but will attempt to find the last non-foreign-key column just-in-case.

For example, either of the following two statements in a schema migration script:

add_index :states, [:country_id, :name], :unique => true
add_index :states, [:name, :country_id], :unique => true


would result in:

validates_uniqueness_of :name, :scope => [:country_id]


Validation may be limited to specific columns by calling schema_validations from within your model class, passing either a single column:

class Country < ActiveRecord::Base
  schema_validations :only => :name
end


or an array of columns:

class Country < ActiveRecord::Base
  schema_validations :except => [:isocode, :iddcode]
end

Further Documentation

There is currently no advanced documentation for this plugin.

New documentation

Edit plugin | (0 older versions) | Last edited by: maxim_kulkin, 8 months ago