Awesome
Postgresql::Check
This gem introduces a few methods to your migrations for adding and removing
Check Constraints.
It also dumps these constraints to schema.rb
.
Requirements
- PostgreSQL
- active_record >= 3.2.0
Installation
Add this line to your application's Gemfile:
gem 'postgresql-check'
And then execute:
$ bundle
Or install it yourself as:
$ gem install postgresql-check
Usage
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 }
end
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'
end
Remove a check constraint:
change_table :products do |t|
t.remove_check name: 'products_price_check'
end
Future plans
- Write tests
- Auto-generate constraint name
- Make
remove_check
reversible
Contributing
- 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