https://github.com/fnando/defaults
Add default value for ActiveRecord attributes
https://github.com/fnando/defaults
activerecord default-value ruby
Last synced: 11 months ago
JSON representation
Add default value for ActiveRecord attributes
- Host: GitHub
- URL: https://github.com/fnando/defaults
- Owner: fnando
- License: mit
- Created: 2008-07-21T01:24:10.000Z (over 17 years ago)
- Default Branch: main
- Last Pushed: 2023-09-05T08:51:27.000Z (over 2 years ago)
- Last Synced: 2025-03-29T05:41:40.795Z (12 months ago)
- Topics: activerecord, default-value, ruby
- Language: Ruby
- Homepage:
- Size: 58.6 KB
- Stars: 18
- Watchers: 2
- Forks: 8
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# Defaults
[](https://github.com/fnando/defaults)
[](https://rubygems.org/gems/defaults)
[](https://rubygems.org/gems/defaults)
## Instalation
Add this line to your application's Gemfile:
```ruby
gem "defaults"
```
And then execute:
$ bundle
Or install it yourself as:
$ gem install defaults
## Usage
Here are the rules:
1. Assigned attributes have precedence over default values
2. Default values have precedence over database defaults.
Add the method call `defaults` to your model.
```ruby
class Page < ActiveRecord::Base
defaults title: "New page",
body: "Put your text here"
end
```
Attributes 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:
```ruby
@page.default_for(:title)
```
You can pass callables (any objects that respond to `.call()` or
`.call(record)`) as attribute:
```ruby
class Expiration
def self.call
Time.now
end
end
class Checksum
def self.call(user)
Digest::SHA1.hexdigest(user.name.to_s, user.email.to_s)
end
end
class User < ApplicationRecord
defaults checksum: Checksum,
expires_at: -> { Time.now }
end
```
You can override the default attributes as follow:
```ruby
Page.default_values = {
title: "Here's your new page",
body: "Write your page text"
}
```
## Maintainer
- [Nando Vieira](https://github.com/fnando)
## Contributors
-
## Contributing
For more details about how to contribute, please read
.
## License
The gem is available as open source under the terms of the
[MIT License](https://opensource.org/licenses/MIT). A copy of the license can be
found at .
## Code of Conduct
Everyone interacting in the defaults project's codebases, issue trackers, chat
rooms and mailing lists is expected to follow the
[code of conduct](https://github.com/fnando/defaults/blob/main/CODE_OF_CONDUCT.md).