Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fnando/defaults
Add default value for ActiveRecord attributes
https://github.com/fnando/defaults
activerecord default-value ruby
Last synced: 27 days 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 16 years ago)
- Default Branch: main
- Last Pushed: 2023-09-05T08:51:27.000Z (about 1 year ago)
- Last Synced: 2024-10-06T04:25:39.665Z (about 1 month ago)
- Topics: activerecord, default-value, ruby
- Language: Ruby
- Homepage:
- Size: 58.6 KB
- Stars: 18
- Watchers: 3
- 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
[![Tests](https://github.com/fnando/defaults/workflows/ruby-tests/badge.svg)](https://github.com/fnando/defaults)
[![Gem](https://img.shields.io/gem/v/defaults.svg)](https://rubygems.org/gems/defaults)
[![Gem](https://img.shields.io/gem/dt/defaults.svg)](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
endclass Checksum
def self.call(user)
Digest::SHA1.hexdigest(user.name.to_s, user.email.to_s)
end
endclass 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).