Code Climate

This gem introduces a few methods to your migrations for adding and removing Check Constraints. It also dumps these constraints to schema.rb.


  • PostgreSQL
  • active_record >= 3.2.0


Add this line to your application's Gemfile:

gem 'postgresql-check'

And then execute:

$ bundle

Or install it yourself as:

$ gem install postgresql-check


Two new methods are introduced to migrations:

  • add_check table_name, condition, name: constraint_name
  • remove_check table_name, name: constraint_name

Given the following model:

class Product < ActiveRecord::Base
  validates :price, numericality: { greater_than: 0 }

You can add a check constraint in your migration:

add_check :products, 'price > 0', name: 'products_price_check'

The code above generates following SQL:

ALTER TABLE "products" ADD CONSTRAINT "products_price_check" (price > 0)

NOTE: :name option is mandatory now.

To remove constraint use remove_check method:

remove_check :products, name: 'products_price_check'

Change Table methods

This gem adds extra methods to create_table and change_table:

create_table :products do |t|
  t.decimal :price, null: false
  t.check 'price > 0', name: 'products_price_check'

Remove a check constraint:

change_table :products do |t|
  t.remove_check name: 'products_price_check'

Future plans

  • Write tests
  • Auto-generate constraint name
  • Make remove_check reversible


  1. Fork it ( )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request