You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
SchemaPlus::DbDefault provides a constant ActiveRecord::DB_DEFAULT that you can use to set an attribute's database column to the default value or expression specified in the database schema.
(Without ActiveRecord::DB_DEFAULT you can update a column to NULL but not to its default value.)
SchemaPlus::DbDefault is part of the SchemaPlus family of Ruby on Rails ActiveRecord extension gems.
Usage
Use ActiveRecord::DB_DEFAULT as a "magic value" for attributes; when saved it will cause SQL to use the DB default value.
record.update_attributes(category: ActiveRecord::DB_DEFAULT)# SQL: UPDATE tablename SET category = DEFAULTrecord.reload
After the save, you'll need to reload the record to replace ActiveRecord::DB_DEFAULT with the value assigned by the database.
Installation
As usual:
gem"schema_plus_db_default"# in a Gemfilegem.add_dependency"schema_plus_db_default"# in a .gemspec
Compatibility
SchemaPlus::DbDefault is tested on:
ruby 2.1.5 with activerecord 4.2, using mysql2 and postgresql
Sqlite3 does not support setting a column to its default value. Attempting to use ActiveRecord::DB_DEFAULTwill raise ActiveRecord::StatementInvalid
History
0.1.1 - Upgrade schema_plus_core dependency
0.1.0 - Initial release extracted from schema_plus 1.x
Development & Testing
Are you interested in contributing to SchemaPlus::DbDefault? Thanks! Please follow
the standard protocol: fork, feature branch, develop, push, and issue pull
request.
Some things to know about to help you develop and test:
schema_dev: SchemaPlus::DbDefault uses schema_dev to
facilitate running rspec tests on the matrix of ruby, activerecord, and database
versions that the gem supports, both locally and on
travis-ci
To to run rspec locally on the full matrix, do:
$ schema_dev bundle install
$ schema_dev rspec
You can also run on just one configuration at a time; For info, see schema_dev --help or the schema_dev README.
The matrix of configurations is specified in schema_dev.yml in
the project root.
schema_plus_core: SchemaPlus::DbDefault uses the SchemaPlus::Core API that
provides middleware callback stacks to make it easy to extend
ActiveRecord's behavior. If that API is missing something you need for
your contribution, please head over to
schema_plus_core and open
an issue or pull request.
schema_monkey: SchemaPlus::DbDefault is implemented as a
schema_monkey client,
using schema_monkey's
convention-based protocols for extending ActiveRecord and using middleware stacks.