norbert / database_constraints forked from fesplugas/database_constraints

Database constraints, the Rails way.

This URL has Read+Write access

Francesc Esplugas (author)
Sat Apr 25 03:26:57 -0700 2009
database_constraints / README.rdoc
100644 60 lines (43 sloc) 1.447 kb

Database Constraints

Adding database constraints to PostgreSQL the Rails way.

Available constraints:

  • Email: Validates format of email
  • Login: Validates uniqueness of login names
  • Positive: Validates positiveness of a number
  • Length: Validates length of a value
  • Uniqueness
  • Foreign keys

Example

Foreign keys:

    class AddForeignKeysToModels < ActiveRecord::Migration

      def self.up
        # add_foreign_key :from_table, :from_column, :to_table
        add_foreign_key :articles, :user_id, :users
      end

      def self.down
        # remove_foreign_key :from_table, :from_column
        remove_foreign_key :articles, :user_id
      end

    end

Validations:

    class AddConstraintsToModels < ActiveRecord::Migration

      def self.up
        add_email_check :users, :email
        add_login_check :users, :login
        add_positive_check :products, :price
        add_length_check :users, :login, :is => 8
        add_uniqueness_check :user, :login
      end

      def self.down
        remove_email_check :users, :email
        remove_login_check :users, :login
        remove_positive_check :users, :price
        remove_length_check :users, :login, :is => 8
        remove_uniqueness_check :user, :login
      end

    end

How to test?

Create a PostgreSQL database named database_constraints and run rake.

Copyright © 2008-2009 Francesc Esplugas Marti, released under the MIT license