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 }
endYou 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'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'
endRemove a check constraint:
change_table :products do |t|
  t.remove_check name: 'products_price_check'
end- Write tests
- Auto-generate constraint name
- Make remove_checkreversible
- Fork it ( https://github.com/take-five/postgresql-check/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request