public
Description: Constraints for PostgreSQL the rails way.
Homepage:
Clone URL: git://github.com/fesplugas/database_constraints.git
Joe Van Dyk (author)
Thu Sep 17 09:51:43 -0700 2009
fesplugas (committer)
Wed Oct 28 16:02:00 -0700 2009
name age message
file .gitignore Wed Oct 28 16:02:00 -0700 2009 Added gitignore [Joe Van Dyk]
file MIT-LICENSE Tue Apr 21 02:26:34 -0700 2009 Updated MIT-LICENSE. [Francesc Esplugas]
file README.rdoc Sat Apr 25 03:17:01 -0700 2009 Updated README. [Francesc Esplugas]
file Rakefile Sat Apr 25 01:04:14 -0700 2009 Plugin is being renamed to database_constraints. [Francesc Esplugas]
directory generators/ Sat Apr 25 03:26:57 -0700 2009 Generator. [Francesc Esplugas]
file init.rb Sat Apr 25 02:39:58 -0700 2009 Added foreign_keys constraints. [Francesc Esplugas]
directory lib/ Wed Oct 28 16:01:51 -0700 2009 Email addresses should be able to contain + and... [Joe Van Dyk]
directory test/ Wed Oct 28 16:01:51 -0700 2009 Email addresses should be able to contain + and... [Joe Van Dyk]
README.rdoc

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