Add this line to your application's Gemfile:
gem"defaults"And then execute:
$ bundle
Or install it yourself as:
$ gem install defaults
Here are the rules:
- Assigned attributes have precedence over default values
- Default values have precedence over database defaults.
Add the method call defaults to your model.
classPage < ActiveRecord::Basedefaultstitle: "New page",body: "Put your text here"endAttributes will be set only if it's a new record and the attribute is blank.
Retrieve the default attribute with the default_for instance method:
@page.default_for(:title)You can pass callables (any objects that respond to .call() or
.call(record)) as attribute:
classExpirationdefself.callTime.nowendendclassChecksumdefself.call(user)Digest::SHA1.hexdigest(user.name.to_s,user.email.to_s)endendclassUser < ApplicationRecorddefaultschecksum: Checksum,expires_at: ->{Time.now}endYou can override the default attributes as follow:
Page.default_values={title: "Here's your new page",body: "Write your page text"}For more details about how to contribute, please read https://github.com/fnando/defaults/blob/main/CONTRIBUTING.md.
The gem is available as open source under the terms of the MIT License. A copy of the license can be found at https://github.com/fnando/defaults/blob/main/LICENSE.md.
Everyone interacting in the defaults project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.