rails_vault
Simple and easy to add settings, preferences and so on to any model. See an example.
Sponsored By Rails Designer
Want to make JavaScript your second-favorite language? 👉 JavaScript for Rails Developers
Installation
bundle add rails_vault
rails generate rails_vault:install
rails db:migrate
Usage
Generate a vault:
rails generate vault MODEL::VAULT_NAME [field:type field:type]
Example:
rails generate vault User::Preferences \
time_zone:string \
datetime_format:string \
hotkeys_disabled:boolean
This will:
- Create a vault class at app/models/users/preferences.rb
- Add
vault :preferences
to your User model
Define vault attributes
class User::Preferences < RailsVault::Base
vault_attribute :time_zone, :string, default: "UTC"
vault_attribute :datetime_format, :string, default: "dd-mm-yyyy"
vault_attribute :hotkeys_disabled, :boolean, default: false
end
Read and write values
user = User.first
user.create_preferences # => User::Preferences Create (6.3ms) INSERT INTO "rails_vaults" …
user.preferences.time_zone # => "UTC"
user.preferences.hotkeys_disabled? # => false
user.preferences.update time_zone: "Amsterdam", hotkeys_disabled: true
user.preferences.time_zone # => "Amsterdam"
user.preferences.hotkeys_disabled? # => true
user.preferences.vault_attributes # => ["time_zone", "datetime_format", "hotkeys_disabled"]
Auto-create vaults
Vaults can be created automatically after the parent is created.
class User < ApplicationRecord
vault :preferences, auto_create: true
# for multiple vaults
vaults :preferences, :settings, auto_create_all: true
end
Contributing
This project uses Standard for formatting Ruby code. Please make sure to run be standardrb
before submitting pull requests. Run tests via rails test
.
License
rails_vault is released under the MIT License.